PythonによるWebスクレイピング 第3版
- Ryan Mitchell 著、嶋田 健志、新井 翔太 訳
- 2025年06月 発行
- 356ページ
- ISBN978-4-8144-0122-2
- フォーマット Print PDF ePub
- 原書: Web Scraping with Python, 3rd Edition
3,960円
書籍のご注文はオーム社サイトへ
内容
Webスクレイピングとは、インターネットからデータを機械的に集め、必要な情報を抽出する技術のことです。2019年の第2版発刊から約5年が経過し、生成AIの台頭で情報を得る方法も大きく変わりましたが、本当に欲しい情報を正しくピンポイントで得るためには、依然としてWebスクレイピングについての知識とスキルが必要です。本書では、インターネット上の膨大な情報の中から、生成AIや検索エンジンだけでは集められない本当に必要な正しい情報を入手する方法を、基礎からていねいに解説し、データの抽出、格納、収集後のクリーニング、さらにはJavaScriptの実行、OCRを含めた自然言語処理、並列処理などの高度なトピックもカバー。プログラミングテクニックとテクノロジー全般だけでなく、法律面の解説も加え、問題に遭遇した際の対処法まで紹介します。
関連書籍
目次
はじめに Ⅰ部 スクレイパーの作成 1章 インターネットの仕組み 1.1 ネットワーク 1.1.1 物理層 1.1.2 データリンク層 1.1.3 ネットワーク層 1.1.4 トランスポート層 1.1.5 セッション層 1.1.6 プレゼンテーション層 1.1.7 アプリケーション層 1.2 HTML 1.3 CSS 1.4 JavaScript 1.5 開発者ツールでWebサイトを見る 2章 Webスクレイピングの適法性と倫理 2.1 商標、著作権、特許 2.1.1 著作権法 2.2 動産不法侵入 2.3 コンピューター詐欺と濫用に関する法律 2.4 robots.txtとサービス規約 2.5 3つのWebスクレイパー 2.5.1 eBay対Bidder’s Edgeと動産不法侵入 2.5.2 米国政府対Auernheimerと「コンピューター詐欺と濫用に関する法律」 2.5.3 Field対Google:著作権とrobots.txt 3章 Webスクレイピングアプリケーション 3.1 プロジェクトの分類 3.2 Eコマース 3.2.1 マーケティング 3.3 学術研究 3.4 プロダクトを作る 3.5 旅行 3.6 営業 3.7 SERPスクレイピング 4章 スクレイパーの開発 4.1 Jupyterを使う 4.2 接続する 4.3 BeautifulSoup 4.3.1 BeautifulSoupをインストールする 4.3.2 BeautifulSoupを実行する 4.3.3 信頼性のある接続と例外処理 5章 高度なHTMLのパース 5.1 BeautifulSoupの使い方 5.1.1 BeautifulSoupのfind()とfind_all() 5.1.2 他のBeautifulSoupオブジェクト 5.1.3 ツリーナビゲーション 5.2 正規表現 5.3 正規表現とBeautifulSoup 5.4 属性へのアクセス 5.5 ラムダ式 5.6 必ずしもハンマーが必要なわけではない 6章 Webクローラーの開発 6.1 単一ドメインを走査する 6.2 サイト全体のクローリング 6.2.1 サイト全体のデータ収集 6.3 インターネットをクローリングする 7章 Webクローリングのモデル 7.1 プランニングとオブジェクトの定義 7.2 さまざまなWebサイトのレイアウトを扱う 7.3 クローラーを構造化する 7.3.1 検索を用いたサイトのクローリング 7.3.2 リンクをたどってサイトをクローリングする 7.3.3 異なる種類のページもクローリングする 7.4 Webクローラーのモデルについての考察 8章 Scrapy 8.1 Scrapyのインストール 8.1.1 新たなスパイダーの初期化 8.2 シンプルなスクレイパーを書く 8.3 規則を使ったスパイダー 8.4 アイテムの作成 8.5 アイテムの出力 8.6 アイテムパイプライン 8.7 Scrapyによるロギング 8.8 さらに学ぶために 9章 データの格納 9.1 メディアファイル 9.2 CSVにデータを保存する 9.3 MySQL 9.3.1 MySQLのインストール 9.3.2 基本的なコマンド 9.3.3 PythonからMySQLに接続する 9.3.4 データベースのテクニック 9.3.5 6次のウィキペディアのようにMySQLで関連をたどる 9.4 メール Ⅱ部 高度なスクレイピング 10章 データの読み込み 10.1 エンコーディング 10.2 テキスト 10.2.1 テキストエンコーディングとグローバルインターネット 10.3 CSV 10.3.1 CSVファイルを読む 10.4 PDF 10.5 Microsoft Wordとdocx 11章 汚いデータの取り扱い 11.1 テキストのクリーニング 11.2 正規化されたテキストの取り扱い 11.3 pandasによるデータのクリーニング 11.3.1 クリーニング 11.3.2 インデックス、ソート、フィルタリング 11.3.3 pandasをさらに詳しく知る 12章 自然言語の読み込みと書き込み 12.1 データを要約する 12.2 マルコフモデル 12.2.1 6次のウィキペディア:結論 12.3 Natural Language Toolkit(NLTK) 12.3.1 インストールと設定 12.3.2 NLTKによる統計分析 12.3.3 NLTKによる字句解析 12.4 さらに学ぶために 13章 フォームとログインを介したクローリング 13.1 Requestsライブラリ 13.2 簡単なフォームを送信する 13.3 ラジオボタン、チェックボックス、その他の入力 13.4 ファイルと画像を送信する 13.5 ログインとCookieを扱う 13.5.1 HTTP Basic認証 13.6 その他のフォームの問題 14章 JavaScriptのスクレイピング 14.1 JavaScriptの簡単な紹介 14.1.1 一般的なJavaScriptライブラリ 14.2 Ajaxと動的なHTML 14.3 Seleniumを用いてPythonでJavaScriptを実行する 14.3.1 Seleniumのインストール方法と実行方法 14.3.2 Seleniumセレクタ 14.3.3 読み込みを待つ 14.3.4 XPath 14.4 他のWebDriver 14.5 リダイレクトの処理 14.6 JavaScriptのまとめ 15章 APIを介したクローリング 15.1 APIの簡単な紹介 15.1.1 HTTPメソッドとAPI 15.1.2 APIレスポンス 15.2 JSONをパースする 15.3 ドキュメントがないAPI 15.3.1 ドキュメントのないAPIを調べる 15.3.2 ドキュメントのないAPIのドキュメントを作る 15.4 APIと他のデータソースを組み合わせる 15.5 APIについてさらに学ぶために 16章 画像処理とテキスト認識 16.1 ライブラリ概要 16.1.1 Pillow 16.1.2 Tesseract 16.1.3 NumPy 16.2 適切にフォーマットされたテキストの処理 16.2.1 画像を自動修正する 16.2.2 Webサイトの画像からテキストをスクレイピングする 16.3 CAPTCHAの読み取りとTesseractの学習 16.3.1 Tesseractを学習させる 16.4 CAPTCHAの読み取りと送信 17章 スクレイピングの落とし穴の回避 17.1 倫理についての注意 17.2 人間らしく見せる 17.2.1 ヘッダーを調整する 17.2.2 JavaScriptでCookieを扱う 17.2.3 TLSフィンガープリント 17.2.4 タイミングがすべて 17.3 フォームでよく見られるセキュリティ機能 17.3.1 隠しフィールドの値 17.3.2 ハニーポットを避ける 17.4 人間らしく見せるためのチェックリスト 18章 スクレイパーによるWeb サイトのテスト 18.1 テスト入門 18.1.1 ユニットテストとは何か 18.2 Pythonのunittest 18.2.1 ウィキペディアをテストする 18.3 Seleniumでテストする 18.3.1 サイトとやり取りする 19章 並列クローリング 19.1 プロセスとスレッド 19.2 マルチスレッドクローリング 19.2.1 競合状態とキュー 19.2.2 threadingモジュール 19.3 マルチプロセス 19.3.1 マルチプロセスクローリング 19.3.2 プロセス間通信 19.4 マルチプロセスクローリング:その2 20章 Webスクレイピングプロキシ 20.1 なぜリモートサーバーを使うか 20.1.1 IPアドレスのブロックを避ける 20.1.2 移植性と拡張性 20.2 Tor 20.2.1 PySocks 20.3 リモートホスティング 20.3.1 Webサイトホスティングアカウントから実行する 20.3.2 クラウドから実行する 20.3.3 さらに進むために 20.4 Webスクレイピングプロキシ 20.4.1 ScrapingBee 20.4.2 ScraperAPI 20.4.3 Oxylabs 20.4.4 Zyte 20.5 さらに学ぶために 索引