インターネットからデータを機械的に集め、必要な情報を抽出するWebスクレイピングにより、インターネット上の膨大な情報の中から、検索エンジンだけでは入手できない本当に必要な情報を入手できるようになります。Webスクレイパーの基礎をていねいに解説するだけでなく、データの抽出、データの格納、データ収集後のクリーニング、さらには、JavaScript実行、Seleniumによる自動化、OCRを含めた自然言語処理、並列処理などの高度なトピックに加えて法律面の解説など、Webスクレイピングを実際に行うために必要なプログラミングテクニックとテクノロジー全般だけでなく、問題に遭遇した際の対処法まで紹介します。豊富な事例から、自分の問題に合ったツールを選択し、解決することが容易となります。Scrapy 1.6などPython 3に全面的に対応した待望の改訂版です。
PythonによるWebスクレイピング 第2版
Ryan Mitchell 著、黒川 利明 訳、嶋田 健志 技術監修
- TOPICS
- Programming , Python
- 発行年月日
- 2019年03月
- PRINT LENGTH
- 312
- ISBN
- 978-4-87311-871-0
- 原書
- Web Scraping with Python, 2E
- FORMAT
- Print PDF EPUB
目次
まえがき 第Ⅰ部 スクレイパーを作る 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 さらに進むために 訳者あとがき 索引