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

Book description

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

Table of contents

  1. 大扉
  2. 原書大扉
  3. クレジット
  4. まえがき
    1. Webスクレイピングとは何か
    2. なぜWebスクレイピングなのか
    3. 本書について
    4. 本書の表記法
    5. サンプルコードの使い方
    6. 問い合わせ先
    7. 謝辞
  5. 第I部 スクレイパーを作る
    1. 1章 最初のWebスクレイパー
      1. 1.1 つなげる
      2. 1.2 初めてのBeautifulSoup
        1. 1.2.1 BeautifulSoupのインストール
        2. 1.2.2 BeautifulSoupを実行する
        3. 1.2.3 例外を処理して確実につなげる
    2. 2章 高度なHTMLパース
      1. 2.1 いつもハンマーが必要なわけではない
      2. 2.2 BeautifulSoupの使い方
        1. 2.2.1 BeautifulSoupのfind()とfind_all()
        2. 2.2.2 他のBeautifulSoupオブジェクト
        3. 2.2.3 木のナビゲーション
          1. 2.2.3.1 子や他の子孫を扱う
          2. 2.2.3.2 兄弟を扱う
          3. 2.2.3.3 親を扱う
      3. 2.3 正規表現
      4. 2.4 正規表現とBeautifulSoup
      5. 2.5 属性へのアクセス
      6. 2.6 ラムダ式
    3. 3章 Webクローラを書く
      1. 3.1 単一ドメインを走査する
      2. 3.2 サイト全体をクローリング
        1. 3.2.1 サイト全体でデータを収集する
      3. 3.3 インターネットをクローリング
    4. 4章 Webクローリングのモデル
      1. 4.1 プランニングとオブジェクトの定義
      2. 4.2 さまざまなWebサイトのレイアウトを扱う
      3. 4.3 クローラを構造化する
        1. 4.3.1 検索によるサイトのクローリング
        2. 4.3.2 リンクをたどってサイトをクローリングする
        3. 4.3.3 異なる種類のページもクローリングする
      4. 4.4 Webクローラのモデルについての考察
    5. 5章 Scrapy
      1. 5.1 Scrapyのインストール
        1. 5.1.1 新たなスパイダーの初期化
      2. 5.2 スクレイパーを簡単に書く
      3. 5.3 規則を使ったスパイダー
      4. 5.4 収集データを整理するItemを作る
      5. 5.5 Itemで出力する
      6. 5.6 itemパイプライン
      7. 5.7 Scrapyでのロギング
      8. 5.8 さらに学ぶために
    6. 6章 データを格納する
      1. 6.1 メディアファイル
      2. 6.2 データをCSVに格納する
      3. 6.3 MySQL
        1. 6.3.1 MySQLのインストール
        2. 6.3.2 基本的なコマンド
        3. 6.3.3 Pythonと統合する
        4. 6.3.4 データベース技法と優れた実践
        5. 6.3.5 MySQLの「6次」
      4. 6.4 メール
  6. 第II部 高度なスクレイピング
    1. 7章 文書を読む
      1. 7.1 文書エンコーディング
      2. 7.2 テキスト
        1. 7.2.1 テキストエンコーディングとグローバルインターネット
          1. 7.2.1.1 テキストエンコーディングの歴史
          2. 7.2.1.2 エンコーディングの実際
      3. 7.3 CSV
        1. 7.3.1 CSVファイルを読む
      4. 7.4 PDF
      5. 7.5 Microsoft Wordと.docx
    2. 8章 汚れたデータをクリーニング
      1. 8.1 コードでのクリーニング
        1. 8.1.1 データ正規化
      2. 8.2 データ収集後のクリーニング
        1. 8.2.1 OpenRefine
          1. 8.2.1.1 インストール
          2. 8.2.1.2 OpenRefineを使う
    3. 9章 自然言語の読み書き
      1. 9.1 データを要約する
      2. 9.2 マルコフモデル
        1. 9.2.1 6次のWikipedia:結論
      3. 9.3 Natural Language Toolkit
        1. 9.3.1 インストールとセットアップ
        2. 9.3.2 NLTKでの統計分析
        3. 9.3.3 NLTKでの字句解析
      4. 9.4 さらに学ぶために
    4. 10章 フォームとログインでクローリング
      1. 10.1 Requestsライブラリ
      2. 10.2 基本フォームをサブミットする
      3. 10.3 ラジオボタン、チェックボックス、その他入力
      4. 10.4 ファイルと画像のサブミット
      5. 10.5 ログインとクッキーを扱う
        1. 10.5.1 HTTP Basic認証
      6. 10.6 他のフォーム問題
    5. 11章 JavaScriptのスクレイピング
      1. 11.1 JavaScriptの簡単な紹介
        1. 11.1.1 共通JavaScriptライブラリ
          1. 11.1.1.1 jQuery
          2. 11.1.1.2 Google Analytics
          3. 11.1.1.3 Google Maps
      2. 11.2 Ajaxと動的HTML
        1. 11.2.1 Seleniumを用いてPythonでJavaScriptを実行
        2. 11.2.2 Seleniumの他のWebDriver
      3. 11.3 リダイレクトの処理
      4. 11.4 JavaScriptについての最終ノート
    6. 12章 APIでクローリング
      1. 12.1 APIの簡単な紹介
        1. 12.1.1 HTTPメソッドとAPI
        2. 12.1.2 APIレスポンス
      2. 12.2 JSONをパースする
      3. 12.3 ドキュメントがないAPI
        1. 12.3.1 ドキュメントのないAPIを調べる
        2. 12.3.2 ドキュメントのないAPIのドキュメントを作る
        3. 12.3.3 APIの探索とドキュメント作成を自動化する
      4. 12.4 APIを他のデータソースと組み合わせる
      5. 12.5 APIについてさらに学ぶために
    7. 13章 画像処理とテキスト認識
      1. 13.1 画像処理ライブラリ
        1. 13.1.1 Pillow
        2. 13.1.2 Tesseract
          1. 13.1.2.1 Tesseractのインストール
          2. 13.1.2.2 pytesseract
        3. 13.1.3 NumPy
      2. 13.2 きちんとフォーマットされたテキストの処理
        1. 13.2.1 画像を自動修正する
        2. 13.2.2 Webサイトの画像からテキストをスクレイピング
      3. 13.3 CAPTCHAの読み込みとTesseractの訓練
        1. 13.3.1 Tesseractを訓練する
      4. 13.4 CAPTCHA解の獲得と解のサブミット
    8. 14章 スクレイピングの落とし穴を避ける
      1. 14.1 倫理についての注意
      2. 14.2 人間らしく見せる
        1. 14.2.1 ヘッダを調整する
        2. 14.2.2 JavaScriptでクッキーを扱う
        3. 14.2.3 タイミングがすべて
      3. 14.3 共通フォームセキュリティ機能
        1. 14.3.1 隠し入力フィールド値
        2. 14.3.2 ハニーポットを避ける
      4. 14.4 人間らしく見せるためのチェックリスト
    9. 15章 Webサイトをスクレイパーでテストする
      1. 15.1 テスト入門
        1. 15.1.1 ユニットテストとは何か
      2. 15.2 Pythonのunittest
        1. 15.2.1 Wikipediaをテストする
      3. 15.3 Seleniumでテストする
        1. 15.3.1 サイトとやり取りする
          1. 15.3.1.1 ドラッグアンドドロップ
          2. 15.3.1.2 スクリーンショットを撮る
      4. 15.4 unittestかSeleniumか?
    10. 16章 並列にWebクローリング
      1. 16.1 プロセスとスレッド
      2. 16.2 マルチスレッドクローリング
        1. 16.2.1 レース条件とキュー
        2. 16.2.2 threadingモジュール
      3. 16.3 マルチプロセスクローリング
        1. 16.3.1 マルチプロセスクローリング例
        2. 16.3.2 プロセス間通信
      4. 16.4 マルチプロセスクローリング――別の方式
    11. 17章 リモートでスクレイピング
      1. 17.1 なぜリモートサーバを使うか
        1. 17.1.1 IPアドレスブロックを避ける
        2. 17.1.2 移植性と拡張性
      2. 17.2 Tor
        1. 17.2.1 PySocks
      3. 17.3 リモートホスティング
        1. 17.3.1 Webサイトホスティングアカウントから実行する
        2. 17.3.2 クラウドから実行する
      4. 17.4 さらに学ぶために
    12. 18章 Webスクレイピングの適法性と倫理
      1. 18.1 商標、著作権、特許
        1. 18.1.1 著作権法
      2. 18.2 動産不法侵入
      3. 18.3 コンピュータ犯罪取締法
      4. 18.4 robots.txtとサービス規約
      5. 18.5 3つのWebスクレイパー
        1. 18.5.1 eBay対Bidder's Edgeと動産不法侵入
        2. 18.5.2 米国政府対Auernheimerとコンピュータ犯罪取締法
        3. 18.5.3 Field対Google:著作権とrobots.txt
      6. 18.6 さらに進むために
    13. 訳者あとがき
      1. はじめに
      2. 初版との相違点
        1. 原書初刷2018-03-20との相違点
        2. 「18章 Webスクレイピングの適法性と倫理」について
      3. 謝辞
      4. 参考文献
        1. Pythonに関して
        2. Scrapyについて
        3. APIについて
        4. MySQLについて
        5. 自然言語処理について
        6. クラウド利用について
        7. 統計について
          1. アルゴリズムについて
          2. 著作権について
    14. 著者・訳者紹介
  7. 奥付

Product information

  • Title: PythonによるWebスクレイピング 第2版
  • Author(s): Ryan Mitchell, 黒川 利明, 嶋田 健志
  • Release date: March 2019
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873118710

You might also like

book

統計クイックリファレンス 第2版

by Sarah Boslaugh, 黒川 利明, 木下 哲也, 中山 智文, 本藤 孝, 樋口 匠

本書は統計の基本概念から応用的手法まで、幅広い情報を網羅したリファレンスです。情報の時代の現代、膨大なデータを収集・分析・解釈・説明するための知識とテクニックが求められています。本書は、「統計的に考える」ことを念頭に、データをしっかり理解し、データの誤用を避け、数字に惑わされないための考え方と知識、テクニックを身に付けられるよう執筆されています。複雑な専門用語に関してもよく整理されており、わかりやすく解説。後半では、ビジネス、医療、教育などのさまざまな専門に特化した部分にも触れて概略がわかるよう工夫されています。新しい情報も数多く盛り込み、時代に即した内容となっています。

book

Backbone.jsアプリケーション開発ガイド

by Addy Osmani, 牧野 聡

Backbone.jsをはじめとして、コードの構造や保守の容易さを向上させてくれるJavaScriptフレームワークが人気です。本書の解説は、MVCによって構造化されたJavaScript SPAアプリケーションを作成する方法など、Backbone.jsについての基礎的な事柄にとどまりません。モジュール形式の開発やさまざまなプラグインの紹介、開発者がよく遭遇する問題への解決策、アプリケーションの骨組みの自動生成やユニットテストに至るまで、Backbone.jsアプリケーション開発のさまざまな局面を多角的にとらえた一冊です。

book

動かして学ぶ量子コンピュータプログラミング ―シミュレータとサンプルコードで理解する基本アルゴリズム

by Eric R. Johnston, Nic Harrigan, Mercedes Gimeno-Segovia, 北野 章, 丸山 耕司

独自のシミュレータQCEngineを使ってJavaScriptで書かれたサンプルプログラムをブラウザ上で動かし、量子コンピュータでのプログラミングに必要な知識やスキルを学ぶことができます。量子コンピューティングの基礎とその可能性に関する直感的理解が容易になるよう、豊富な例と図を用いて説明します。前半では、単一キュビットに対する基本的な量子演算、多重キュビット演算、複合演算(量子プリミティブ)、基本的な量子アプリケーション、後半では、探索問題、画像処理、暗号問題、機械学習への応用について解説しており、本書だけで基礎から実践的な応用技術までを一気に習得できます。

book

Python機械学習クックブック

by Chris Albon, 中田 秀基

Pythonによる機械学習を進める上で、頻繁に遭遇すると思われる200超の問題とその解決策を紹介。データ構造(ベクトル、行列、配列)、数値データ、カテゴリデータ、テキスト、画像、日時データの取り扱いといったデータ分析の基本から、特徴量抽出、次元削減、モデルの評価と選択、線形回帰、決定木、ランダムフォレスト、k-最近傍法、SVM、ナイーブベイズ、クラスタリング、ニューラルネットワーク、訓練済みモデルのセーブとロードなど、幅広い内容をカバー。巻末に日本語版付録「日本語テキストの取り扱い」を収録。「やりたいこと」「困っていること」に答えてくれる一冊です。