クローリングハック あらゆるWebサイトをクロールするための実践テクニック【PDF版】

翔泳社(出版社) , 竹添直樹(著) , 島本多可子(著) , 田所駿佑(著) , 萩野貴拓(著) , 川上桃子(著)

商品番号
154730
販売状態
新発売
納品形態
会員メニューよりダウンロード
発売日
2017年09月14日
ISBN
9784798154732
データサイズ
約31.9MB
制限事項
印刷可・テキストのコピー可
キーワード
プログラミング  開発  電子書籍【PDF版】  web制作

販売価格:¥2,894(税込)

送料無料 在庫あり

本体価格の10%をポイント還元(会員限定)

紙の書籍を見る
  • このエントリーをはてなブックマークに追加
ほしい物リストに追加
  • 本製品は電子書籍【PDF版】です。
  • ご購入いただいたPDFには、購入者のメールアドレス、および翔泳社独自の著作権情報が埋め込まれます。
  • 本製品を無断で複製、転載、譲渡、共有および販売を行った場合、法律により罰せられる可能性がございます。
  • ご購入の前に必ずこちらをお読みください。

Webアプリケーション、Webサービスを開発/運用する
エンジニアは、HTML/HTTPやWebサーバなどWeb技術の
仕組みや基礎的な知識をおさえておかなければなりません。

本書では、実サービスでの大規模なWebクローラーの
開発/運用経験をもとに、Webクローラーを支える、HTTP、
文字コード、HTML、認証、Ajax/JSONなど、Webエンジニアが
おさえておくべきポイントやテクニックを学びます。

クローラーから見たWebサイトの仕組みとその実情に加えて、
現実に即した実践的かつ効率的なクローリングの方法論に
ついても解説します。

○実例をもとにHTTPやHTMLなどWebの仕組みを深く知ることができる
○大規模なWebクローラーの開発/運用ノウハウを知ることができる
○Webサイトの運営者(クロールされる側)もクローラーに関する知見を得ることができる

PDF版のご利用方法

  1. ご購入後、SEshopにログインし、会員メニューに進みます。
  2. ご購入電子書籍およびデータ > [ご購入電子書籍およびダウンロードデータ一覧]をクリックします。
  3. 購入済みの電子書籍のタイトルが表示されますので、リンクをクリックしてダウンロードしてください。
  4. PDF形式のファイルを、お好きな場所に保存してください。
  5. 端末の種類を問わず、ご利用いただけます。
Chapter 1 クローラーを支える技術
1-1 そもそもクローラーってなに?
1-2 クローラーの仕組み
 クローリング
 スクレイピング
 データの保存
1-3 クローラーとWeb技術
 Webクローラーが守るべきルール
   クロール先のサーバに負荷をかけすぎない
   取得したコンテンツの著作権を守る
   拒否されたWebサイトやWebページはクロールしない
 クローラーが直面する課題
1-4 クローラーを作ってみよう
 Javaによるシンプルなクローラーの実装
   Jsoup
   crawler4j
 クローリング・スクレイピング用のサービスやツールを利用する
  import.io
  scraper
1-5 開発をサポートするツール
 curl
  リクエストを送信する
  HTTPヘッダを表示する
  リクエストヘッダを指定する
  リクエストボディで送信する内容を指定する
 ブラウザの開発者向けツール
Chapter 2 HTTPをより深く理解する
2-1 HTTPの概要
 HTTPの通信内容を覗いてみる
2-2 HTTPメソッドの使い分け
 一部のメソッドがサポートされていない場合がある
 メソッドの使い方が適切ではない場合がある
   GETではなくPOSTメソッドで画面遷移している
   GETメソッドで更新処理をしている
 URLエンコードの方式の違いによるトラブル
   URLの構造
   URLエンコード
  半角スペースのエンコード方法の違い
2-3 信用できないレスポンスステータス
 ステータスコードに応じて適切な処理をする
 エラーが発生しているのに200が返ってくる
 ページが存在しない場合にリダイレクトされる
 そもそもサーバに接続できない
 サーバエラー時の一般的な対処法
   400 Bad Request
   401 Unauthrorized
   403 Forbidden
   404 Not Found
   405 Method Not Allowed
   406 Not Acceptable
   408 Request Timeout
   500 Internal Server Error
   501 Not Implemented
   502 Bad Gateway
   503 Service Unavailable
   504 Gateway Timeout
 リダイレクトの微妙な意味の違い
   一時的な移動と恒久的な移動
   メソッドの変更が許されているかどうか
   クローラーでのリダイレクトの扱い方
   metaタグによるリダイレクト
   canonicalが示す本来のURL
2-4 HTTPヘッダの調整
 クローラーのユーザーエージェント
   サーバサイドでクローラーかどうかを判定する
 クッキーを引き継がないとクロールできないWebサイト
   クッキーを引き継ぐ
 国際化されたWebサイトをクロールする
   地域や言語ごとに異なるドメインやURLで提供されている場合
   Accept-Languageヘッダで切り替えられている場合
2-5 プロキシ経由でのクロール
 プロキシ使用時のHTTP通信の内容
 クローラーでプロキシを使用する
2-6 SSL通信時のエラー
 SSLのバージョン
 SSL対応サイトのクロール
 JavaのAESのキー長の問題
2-7 HTTP/2
 JavaでのHTTP/2の取り扱い
2-8 まとめ
Chapter 3 文字化けと戦う
3-1 クローリングと文字コード
3-2 どうして文字は化けるのか?
 コンピュータと文字
 文字化けとマルチバイト文字
3-3 クライアントとサーバと文字化け
 文字コードはどこで化ける?
   クライアント・サーバ間
   Content-Typeヘッダで文字コードが指定されている場合
   metaタグで文字コードが指定されている場合
 アプリケーション・データベース間
 テキストファイルの読み書き
3-4 文字コードを適切に扱う
 クローリングと文字コード
 インデキシングと文字コード
   正規化
   危険なデータは消毒(サニタイズ)!
3-5 代表的な文字コード
 UTF-8
 Shift_JIS
 EUC-JP
 ISO-2022-JP
3-6 文字コードにまつわる落とし穴
 文字コード名を信じるな
   原因
   対策
 Shift_JISじゃないShift_JIS
   原因
   対策
 データベースと寿司の受難①――消える寿司
   原因
   対策
 データベースと寿司の受難②――絵文字で検索できない問題
   原因
   対策
 嘘みたいなフォントの話
   原因
   対策
 トラブルシューティングのためのTips
   テキストエンコーディング――Google Chromeでエンコーディングを切り替える拡張機能
   hexdump――16進ダンプでバイト列を確認する
   バイナリエディタ――ファイルを16進ダンプする
3-7 文字コードを推定するには?
 juniversalchardet
 ICU4J
 Java以外の言語での実装
 文字コード判定用バイト列の長さと判定精度
3-8 まとめ
Chapter 4 スクレイピングの極意
4-1 HTMLからデータを取得する
 正規表現
 XPath
 CSSセレクタ
 HTML以外のデータ
4-2 CSSセレクタを使いこなす
 指定した位置の要素を取得する――nth-child()
 テキストノードを文字列で検索する――contains()
 テキストノードを正規表現で検索する――matches()
 子孫の要素を含めずに検索する――containsOwn()とmatchesOwn()
 属性で検索する
   属性の有無による検索
   属性値での検索
   属性値の部分一致検索
   前方一致検索――[attr^=val]
   後方一致検索――[attr$=val]
   部分一致検索――[attr*=val]
   言語コードでの検索――[attr|=val]
   属性値に特定の文字を含まないものを検索する
4-3 スクレイピングしたデータの加工
 例1 alt属性からデータを取得する
 例2 金額の抽出
 例3 住所の抽出
4-4 メタデータを活用しよう
 Webページのメタデータ
  metaタグ
  PageMap
  OGP
    基本的なメタデータ
    任意のメタデータ
    構造化プロパティ
    複数設定
   Twitter Card
 構造化マークアップ
   Microformats
   Microdata
     itemscope属性
     itemtype属性
     itemprop属性
     itemref属性
   RDFa/RDFa Lite
     vocab属性、typeof属性、property属性
     resource属性
     prefix属性
   JSON-LD
   構造化データテストツールを活用しよう
   検索結果表示時の構造化データの利用
     パンくずリスト
     検索ボックス
     ナレッジグラフパネルへの情報の追加
     ファクトチェック
4-5 まとめ
Chapter 5 認証を突破せよ!
5-1 認証が必要なページをクロールする理由
 認証の必要なWebサイトのクロールはマナーを守って
   プライバシーに注意
   トラブルにならないために、しっかりとした規約を
   セキュリティは厳重に
   できる限りAPIを使った連携を
5-2 様々な認証方式とクローリング方法
 HTTP認証
 フォームベース認証
   ログインフォームのHTMLと通信内容を分析してみよう
   クロスサイトリクエストフォージェリ(CSRF)
   フォームベース認証のプログラム例
   セッション管理の仕組み
   URLにセッションIDを含めるアプリケーションも
   セッションハイジャック
     HTTPSかつクッキーにsecure属性とhttpOnly属性を指定する
     適切な強度のセッションIDを使用する
  2段階認証
  CAPTCHAによるBOT対策
5-3 Web APIを使って情報を取得しよう
 アクセスキーによる認証
 OAuth 2.0
   OAuthの処理フロー
     Authorization Code(認可コード)
     Implicit Grant
     Resource Owner Password Credentials
     Client Credentials
     Authorization Codeのフロー
     アクセストークンとリフレッシュトークン
   認証と認可
   pac4jでGitHubのOAuthを利用してみる
5-4 まとめ
Chapter 6 クローリングの応用テクニック
6-1 クローラーが守るべきマナー
 リクエスト数、リクエスト間隔の制限
 クロールしてもよいページの制限
   robots.txt――サイト単位の設定
   自分のクローラーはどれに従えばよいのか?
   アクセス制限はDisallowとAllowを見るべし
     例1 Disallowになにも記述がない場合
     例2 ディレクトリ末尾の/の有無による違い
     例3 DisallowやAllowの優先順位
   robots metaタグ――ページごとの設定
     微妙に意味が異なる2つのnofollow
   X-Robots-Tagヘッダ――HTML以外のファイルの場合
6-2 必要なページのみクロールしよう
 どこまでページングをたどるか
   まずはたどれるリンクを探そう
   新着アイコンを探せ
   まさかの無限ループ
 意外と使えない!? サイトマップXML
   テキストファイルのサイトマップ
   サイトマップインデックスファイル
   gzip形式
 RSSやAtomからサイトの更新情報を取得する
   RSS 1.0 / 2.0
   Atom
   PubSubHubbub
 コンテンツをキャッシュして通信を減らす
 gzip圧縮でレスポンスを高速化
6-3 削除されたコンテンツを判定する
 コンテンツに記載された終了期限を使用する
 対象サイトを定期的にクロールする
 インデックス済みのURLを定期的にチェックする
 一覧ページにURLが存在しなければ削除されたものとみなす
 残る問題
6-4 Webサイトの更新日時、更新頻度を学習する
 明記されている更新日時を探す
 エラー日時を把握しその日時を避ける
 更新頻度に応じてクロール頻度を調整する
 クロール所要時間からクローラーのリソース使用量を平準化する
6-5 究極の効率化=クロールしない
6-6 まとめ
Chapter 7 JavaScriptと戯れる
7-1 AjaxやSPAの流行による苦悩
 AjaxによるJavaScriptの復権、そしてSPAの登場
 JavaScriptを使ったWebページの実例
   確認ダイアログやフォームの入力補助
   画面遷移をJavaScriptで行う
   HTMLを動的に生成する
   Ajaxを使って非同期通信を行う
 クローラーから見たJavaScript
7-2 JavaScriptとの戦いを避ける
 JavaScriptの動作を再現する
 クローラー向けの情報を探せ
 モバイルサイトを狙え
   Chromeでスマートフォン向けサイトを確認する
   スマートフォンのユーザーエージェント
7-3 ブラウザを操作するツールを活用する
 Selenium WebDriverを使ってみよう
   WebDriverのセットアップ
   WebDriverでクロールしてみる
   要素の選択
   ダイアログの操作
   非同期に更新される画面の表示を待つ
     要素が見つかるまで自動的にウェイトする
     指定した条件を満たすまでウェイトする
7-4 まとめ

書籍のサンプルなどのダウンロードは、翔泳社サイトへ移動いたしました。
ダウンロード

各種問い合わせは以下のリンクからご連絡ください

関連商品