ホームページ >バックエンド開発 >Python チュートリアル >Python を使用した Web クローラーの構築: Web ページからのデータの抽出

Python を使用した Web クローラーの構築: Web ページからのデータの抽出

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-21 10:10:09642ブラウズ

Building a Web Crawler with Python: Extracting Data from Web Pages

ウェブ スパイダー、またはウェブ クローラーは、インターネットを移動し、ウェブ ページから指定されたデータを収集および抽出するように設計された自動プログラムです。明確な構文、広範なライブラリ、活発なコミュニティで知られる Python は、これらのクローラーを構築するための推奨言語として浮上しています。このチュートリアルでは、潜在的なソリューションとして 98IP プロキシを使用して、クローラ対策を克服するための戦略を含む、データ抽出用の基本的な Python Web クローラを作成するためのステップバイステップのガイドを提供します。

私。環境のセットアップ

1.1 Python のインストール

Python がシステムにインストールされていることを確認してください。優れたパフォーマンスと幅広いライブラリのサポートのため、Python 3 をお勧めします。 Python の公式 Web サイトから適切なバージョンをダウンロードします。

1.2 必須ライブラリのインストール

Web クローラーを構築するには、通常、次の Python ライブラリが必要です。

  • requests: HTTP リクエストの送信用。
  • BeautifulSoup: HTML の解析とデータの抽出用。
  • pandas: データの操作と保存用 (オプション)。
  • timerandom などの標準ライブラリ: 遅延を管理し、アンチクローラー メカニズムによる検出を回避するためにリクエストをランダム化します。

pip を使用してこれらをインストールします:

<code class="language-bash">pip install requests beautifulsoup4 pandas</code>

II.クローラーを作成する

2.1 HTTP リクエストの送信

requests ライブラリを使用して Web ページのコンテンツを取得します:

<code class="language-python">import requests

url = 'http://example.com'  # Replace with your target URL
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}  # Mimics a browser
response = requests.get(url, headers=headers)

if response.status_code == 200:
    page_content = response.text
else:
    print(f'Request failed: {response.status_code}')</code>

2.2 HTML の解析

BeautifulSoup を使用して HTML を解析し、データを抽出します。

<code class="language-python">from bs4 import BeautifulSoup

soup = BeautifulSoup(page_content, 'html.parser')

# Example: Extract text from all <h1> tags.
titles = soup.find_all('h1')
for title in titles:
    print(title.get_text())</code>

2.3 クローラー対策の回避

Web サイトでは、IP ブロックや CAPTCHA などのクローラー対策技術が採用されています。これらを回避するには:

  • リクエスト ヘッダーの設定: 上で示したように、User-AgentAccept などのヘッダーを設定してブラウザーの動作を模倣します。
  • プロキシ IP を使用する: プロキシ サーバーを使用して IP アドレスをマスクします。 98IP プロキシのようなサービスは、IP 禁止を回避するために多数のプロキシ IP を提供します。

98IP プロキシの使用 (例):

98IP プロキシからプロキシ IP とポートを取得します。 次に、この情報を requests 呼び出しに組み込みます。

<code class="language-python">proxies = {
    'http': f'http://{proxy_ip}:{proxy_port}',  # Replace with your 98IP proxy details
    'https': f'https://{proxy_ip}:{proxy_port}',  # If HTTPS is supported
}

response = requests.get(url, headers=headers, proxies=proxies)</code>

注: 堅牢なクロールを実現するには、98IP から複数のプロキシ IP を取得し、それらをローテーションして、単一 IP のブロックを防ぎます。 プロキシの障害を管理するためにエラー処理を実装します。

  • 遅延の導入: 人間のブラウジングをシミュレートするために、リクエスト間にランダムな遅延を追加します。
  • CAPTCHA 処理: CAPTCHA については、OCR (光学式文字認識) またはサードパーティの CAPTCHA 解決サービスを調べてください。 ウェブサイトの利用規約に注意してください。

III.データの保存と処理

3.1 データの永続性

抽出したデータをファイル、データベース、またはクラウド ストレージに保存します。 CSV に保存する方法は次のとおりです:

<code class="language-bash">pip install requests beautifulsoup4 pandas</code>

以上がPython を使用した Web クローラーの構築: Web ページからのデータの抽出の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:デコレーター次の記事:デコレーター