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

中上級者向け高度なテクニックを駆使したWebスクレイピングの解説書、待望の改訂版!

このような方におすすめ

Webからデータを収集したいと考えている人、データサイエンティスト、研究者
  • 著者嶋田 健志/Ryan Mitchell/黒川 利明
  • 定価3,520 (本体3,200 円+税)
  • B5変 312頁 2019/03発行
  • ISBN978-4-87311-871-0
  • 定価
  • ポイント0
  • 数量

※本体価格は変更される場合があります。
※通常2〜3営業日以内で発送いたします。
※取寄が可能な場合もございますのでお問合せください。

  • 概要
  • 主要目次
  • 詳細目次

2016年3月に発刊された『PythonによるWebスクレイピング』の改訂版。各種ツールのバージョンアップに合わせ、全面改訂されました。前半でWebスクレイパーとクローラの基礎を、後半でOCRを使った情報抽出や、JavaScript実行、Seleniumによるインタフェース使用やテスト自動化、自然言語処理などの高度なトピックに加えて法律面の解説など、Webスクレイピングを実際に行うために必要なプログラミングテクニックとテクノロジー全般を紹介します。対象読者を中上級者に絞り、他のスクレイピング解説書にはない、高度なテクニックまでカバーします。

https://www.ohmsha.co.jp/book/9784873118710/

    
まえがき

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

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 メール

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

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 さらに進むために

訳者あとがき
索引