PythonによるWebスクレイピング 第2版

[cover photo]
TOPICS
Programming , Python
発行年月日
PRINT LENGTH
312
ISBN
978-4-87311-871-0
原書
Web Scraping with Python, 2E
FORMAT
Print PDF EPUB
Ebook
3,520円
Ebookを購入する
Print
3,520円

インターネットからデータを機械的に集め、必要な情報を抽出するWebスクレイピングにより、インターネット上の膨大な情報の中から、検索エンジンだけでは入手できない本当に必要な情報を入手できるようになります。Webスクレイパーの基礎をていねいに解説するだけでなく、データの抽出、データの格納、データ収集後のクリーニング、さらには、JavaScript実行、Seleniumによる自動化、OCRを含めた自然言語処理、並列処理などの高度なトピックに加えて法律面の解説など、Webスクレイピングを実際に行うために必要なプログラミングテクニックとテクノロジー全般だけでなく、問題に遭遇した際の対処法まで紹介します。豊富な事例から、自分の問題に合ったツールを選択し、解決することが容易となります。Scrapy 1.6などPython 3に全面的に対応した待望の改訂版です。

目次

まえがき

第Ⅰ部 スクレイパーを作る

1章 最初のWebスクレイパー
    1.1 つなげる
    1.2 初めてのBeautifulSoup
        1.2.1 BeautifulSoupのインストール
        1.2.2 BeautifulSoupを実行する
        1.2.3 例外を処理して確実につなげる

2章 高度なHTMLパース
    2.1 いつもハンマーが必要なわけではない
    2.2  BeautifulSoupの使い方
        2.2.1 BeautifulSoupのfind()とfind_all()
        2.2.2 他のBeautifulSoupオブジェクト
        2.2.3 木のナビゲーション
            2.2.3.1 子や他の子孫を扱う
            2.2.3.2 兄弟を扱う
            2.2.3.3 親を扱う
    2.3 正規表現
    2.4 正規表現とBeautifulSoup
    2.5 属性へのアクセス
    2.6 ラムダ式

3章 Webクローラを書く
    3.1 単一ドメインを走査する
    3.2 サイト全体をクローリング
        3.2.1 サイト全体でデータを収集する
    3.3 インターネットをクローリング

4章 Webクローリングのモデル
    4.1 プランニングとオブジェクトの定義
    4.2 さまざまなWebサイトのレイアウトを扱う
    4.3 クローラを構造化する
        4.3.1 検索によるサイトのクローリング
        4.3.2 リンクをたどってサイトをクローリングする
        4.3.3 異なる種類のページもクローリングする
    4.4  Webクローラのモデルについての考察

5章 Scrapy
    5.1 Scrapyのインストール
        5.1.1 新たなスパイダーの初期化
    5.2 スクレイパーを簡単に書く
    5.3 規則を使ったスパイダー
    5.4 収集データを整理するItemを作る
    5.5 Itemで出力する
    5.6 itemパイプライン
    5.7 Scrapyでのロギング
    5.8 さらに学ぶために

6章 データを格納する
    6.1 メディアファイル
    6.2 データをCSVに格納する
    6.3 MySQL
        6.3.1 MySQLのインストール
        6.3.2 基本的なコマンド
        6.3.3 Pythonと統合する
        6.3.4 データベース技法と優れた実践
        6.3.5 MySQLの「6次」
    6.4 メール

第Ⅱ部 高度なスクレイピング

7章 文書を読む
    7.1 文書エンコーディング
    7.2 テキスト
        7.2.1 テキストエンコーディングとグローバルインターネット
            7.2.1.1 テキストエンコーディングの歴史
            7.2.1.2 エンコーディングの実際
    7.3 CSV
        7.3.1 CSVファイルを読む
    7.4 PDF
    7.5 Microsoft Wordと.docx

8章 汚れたデータをクリーニング
    8.1 コードでのクリーニング
        8.1.1 データ正規化
    8.2 データ収集後のクリーニング
        8.2.1 OpenRefine
            8.2.1.1 インストール
            8.2.1.2 OpenRefineを使う

9章 自然言語の読み書き
    9.1 データを要約する
    9.2 マルコフモデル
        9.2.1 6次のWikipedia:結論
    9.3  Natural Language Toolkit
        9.3.1 インストールとセットアップ
        9.3.2 NLTKでの統計分析
        9.3.3 NLTKでの字句解析
    9.4 さらに学ぶために

10章 フォームとログインでクローリング
    10.1 Requestsライブラリ
    10.2 基本フォームをサブミットする
    10.3 ラジオボタン、チェックボックス、その他入力
    10.4 ファイルと画像のサブミット
    10.5 ログインとクッキーを扱う
        10.5.1 HTTP Basic認証
    10.6 他のフォーム問題

11章 JavaScriptのスクレイピング
    11.1 JavaScriptの簡単な紹介
        11.1.1 共通JavaScriptライブラリ
            11.1.1.1 jQuery
            11.1.1.2 Google Analytics
            11.1.1.3 Google Maps
    11.2 Ajaxと動的HTML
        11.2.1 Seleniumを用いてPythonでJavaScriptを実行
        11.2.2 Seleniumの他のWebDriver
    11.3 リダイレクトの処理
    11.4 JavaScriptについての最終ノート

12章 APIでクローリング
    12.1 APIの簡単な紹介
        12.1.1 HTTPメソッドとAPI
        12.1.2 APIレスポンス
    12.2 JSONをパースする
    12.3 ドキュメントがないAPI
        12.3.1 ドキュメントのないAPIを調べる
        12.3.2 ドキュメントのないAPIのドキュメントを作る
        12.3.3 APIの検索とドキュメント作成を自動化する
    12.4 APIを他のデータソースと組み合わせる
    12.5 APIについてさらに学ぶために

13章 画像処理とテキスト認識
    13.1 画像処理ライブラリ
        13.1.1 Pillow
        13.1.2 Tesseract
            13.1.2.1 Tesseractのインストール
            13.1.2.2 pytesseract
        13.1.3 NumPy
    13.2 きちんとフォーマットされたテキストの処理
        13.2.1 画像を自動修正する
        13.2.2 Webサイトの画像からテキストをスクレイピング
    13.3 CAPTCHAの読み込みとTesseractの訓練
        13.3.1 Tesseractを訓練する
    13.4 CAPTCHA解の獲得と解のサブミット

14章 スクレイピングの落とし穴を避ける
    14.1 倫理についての注意
    14.2 人間らしく見せる
        14.2.1 ヘッダを調整する
        14.2.2 JavaScriptでクッキーを扱う
        14.2.3 タイミングがすべて
    14.3 共通フォームセキュリティ機能
        14.3.1 隠し入力フィールド値
        14.3.2 ハニーポットを避ける
    14.4 人間らしく見せるためのチェックリスト

15章 Webサイトをスクレイパーでテストする
    15.1 テスト入門
        15.1.1 ユニットテストとは何か
    15.2 Pythonのunittest
        15.2.1 Wikipediaをテストする
    15.3 Seleniumでテストする
        15.3.1 サイトとやり取りする
            15.3.1.1 ドラッグアンドドロップ
            15.3.1.2 スクリーンショットを撮る
    15.4 unittestかSeleniumか?

16章 並列にWebクローリング
    16.1 プロセスとスレッド
    16.2 マルチスレッドクローリング
        16.2.1 レース条件とキュー
        16.2.2 threadingモジュール
    16.3 マルチプロセスクローリング
        16.3.1 マルチプロセスクローリング例
        16.3.2 プロセス間通信
    16.4 マルチプロセスクローリング.別の方式

17章 リモートでスクレイピング
    17.1 なぜリモートサーバを使うか
        17.1.1 IPアドレスブロックを避ける
        17.1.2 移植性と拡張性
    17.2 Tor
        17.2.1 PySocks
    17.3 リモートホスティング
        17.3.1 Webサイトホスティングアカウントから実行する
        17.3.2 クラウドから実行する
    17.4 さらに学ぶために

18章 Webスクレイピングの適法性と倫理
    18.1 商標、著作権、特許
        18.1.1 著作権法
    18.2 動産不法侵入
    18.3 コンピュータ犯罪取締法
    18.4 robots.txtとサービス規約
    18.5 3つのWebスクレイパー
        18.5.1 eBay対Bidder's Edgeと動産不法侵入
        18.5.2 米国政府対Auernheimerとコンピュータ犯罪取締法
        18.5.3 Field対Google:著作権とrobots.txt
    18.6 さらに進むために

訳者あとがき
索引