クローリングハック―あらゆるWebサイトをクロールするための実践テクニック [単行本]
    • クローリングハック―あらゆるWebサイトをクロールするための実践テクニック [単行本]

    • ¥2,94889 ゴールドポイント(3%還元)
    • 在庫あり2025年3月31日月曜日までヨドバシエクストリームサービス便(無料)がお届け
100000009002831500

クローリングハック―あらゆるWebサイトをクロールするための実践テクニック [単行本]

  • 3.0
価格:¥2,948(税込)
ゴールドポイント:89 ゴールドポイント(3%還元)(¥89相当)
フォーマット:
お届け日:在庫あり今すぐのご注文で、2025年3月31日月曜日までヨドバシエクストリームサービス便(無料)がお届けします。届け先変更]詳しくはこちら
出版社:翔泳社
販売開始日: 2017/09/16
お取り扱い: のお取り扱い商品です。
ご確認事項:返品不可
店舗受け取りが可能です
マルチメディアAkibaマルチメディア梅田マルチメディア博多にて24時間営業時間外でもお受け取りいただけるようになりました

クローリングハック―あらゆるWebサイトをクロールするための実践テクニック の 商品概要

  • 要旨(「BOOK」データベースより)

    あらゆるWebサイトをクロールするための実践テクニック。
  • 目次

    ■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 まとめ
  • 著者紹介(「BOOK著者紹介情報」より)(本データはこの書籍が刊行された当時に掲載されていたものです)

    竹添 直樹(タケゾエ ナオキ)
    株式会社ビズリーチ所属。プログラマ。業務の傍らOSS活動や書籍などの執筆を行っており、GitBucket、Apache PredictionIQ、Scalatraなどのコミッタを務める一方、『Scalaパズル』を翻訳、『Java逆引きレシピ』『Scala逆引きレシピ』『Seasar2徹底入門SAStruts/S2JDBC対応』などを執筆(いずれも翔泳社刊)

    島本 多可子(シマモト タカコ)
    株式会社ビズリーチに勤務中。技術者でいたいと思い現職へ。ここ数年は「Scala」「オープンソース」をキーワードに、Webアプリケーションの開発に携わってきたが、最近はもっぱらApache Spark StreamingとAWS‐Kinesisのお世話に追われている。オープンソースのGitHubクローン「GitBucket」の開発も行う

    田所 駿佑(タドコロ シュンスケ)
    株式会社ビズリーチ所属のScalaエンジニア

    萩野 貴拓(ハギノ タカヒロ)
    株式会社ビズリーチAI室所属。求人検索エンジニア「スタンバイ」のクローラー運用や検索品質の最適化、データマイニングなどを担当した後、現在は機械学習のシステム基盤構築に従事

    川上 桃子(カワカミ モモコ)
    株式会社ビズリーチスタンバイ事業部で業務委託として勤務中。求人検索エンジン「スタンバイ」のクローリング定義のメンテナンスを行っている
  • 出版社からのコメント

    Webクローラーを通して、WebエンジニアがおさえておくべきWeb技術の仕組みや基礎知識を知ることができる書籍です。
  • 内容紹介

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

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

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

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

クローリングハック―あらゆるWebサイトをクロールするための実践テクニック の商品スペック

商品仕様
出版社名:翔泳社
著者名:竹添 直樹(著)/島本 多可子(著)/田所 駿佑(著)/萩野 貴拓(著)/川上 桃子(著)
発行年月日:2017/09/14
ISBN-10:4798150517
ISBN-13:9784798150512
判型:A5
対象:専門
発行形態:単行本
内容:電子通信
言語:日本語
ページ数:321ページ
縦:21cm
他の翔泳社の書籍を探す

    翔泳社 クローリングハック―あらゆるWebサイトをクロールするための実践テクニック [単行本] に関するレビューとQ&A

    商品に関するご意見やご感想、購入者への質問をお待ちしています!