ホームページ >バックエンド開発 >Python チュートリアル >BeautifulSoup と Requests を使用して Python クローラーを使用して Web ページ データをクロールする方法

BeautifulSoup と Requests を使用して Python クローラーを使用して Web ページ データをクロールする方法

WBOY
WBOY転載
2023-04-29 12:52:062303ブラウズ

1. はじめに

Web クローラーの実装原理は次の手順に要約できます:

  • HTTP リクエストの送信: Web クローラーは HTTP リクエストを送信します。ターゲット Web サイトへ (通常は GET リクエスト) Web ページのコンテンツを取得します。 Python では、リクエスト ライブラリを使用して HTTP リクエストを送信できます。

  • HTML の解析: ターゲット Web サイトから応答を受信した後、クローラーは HTML コンテンツを解析して有用な情報を抽出する必要があります。 HTML は Web ページの構造を記述するために使用されるマークアップ言語であり、一連のネストされたタグで構成されます。クローラーは、これらのタグと属性に基づいて必要なデータを見つけて抽出できます。 Python では、BeautifulSoup や lxml などのライブラリを使用して HTML を解析できます。

  • データ抽出: HTML を解析した後、クローラーは、事前に決定されたルールに従って必要なデータを抽出する必要があります。これらのルールは、タグ名、属性、CSS セレクター、XPath などに基づくことができます。 Python では、BeautifulSoup はタグベースと属性ベースのデータ抽出機能を提供し、lxml と cssselect は CSS セレクターと XPath を処理できます。

  • データ ストレージ: クローラーによってキャプチャされたデータは、通常、後続の処理のためにファイルまたはデータベースに保存する必要があります。 Python では、ファイル I/O 操作、csv ライブラリ、またはデータベース接続ライブラリ (sqlite3、pymysql、pymongo など) を使用して、データをローカル ファイルまたはデータベースに保存できます。

  • 自動走査: 多くの Web サイトのデータは複数のページに分散されているため、クローラーはこれらのページを自動的に走査してデータを抽出する必要があります。通常、横断プロセスには、新しい URL の発見、ページのめくりなどが含まれます。クローラーは HTML の解析中に新しい URL を探し、それらをクロール対象のキューに追加し、上記の手順を続行します。

  • 非同期および同時実行: クローラーの効率を向上させるために、非同期および同時実行テクノロジーを使用して複数のリクエストを同時に処理できます。 Python では、マルチスレッド (スレッド化)、マルチプロセス (マルチプロセッシング)、コルーチン (asyncio) およびその他のテクノロジを使用して、同時クロールを実現できます。

  • クローラー対策戦略と対応: 多くの Web サイトでは、アクセス速度の制限、ユーザー エージェント、検証コードの検出などのクローラー対策戦略が採用されています。これらの戦略に対処するために、クローラはプロキシ IP を使用し、ブラウザのユーザー エージェントをシミュレートし、検証コードやその他の技術を自動的に識別する必要がある場合があります。 Python では、fake_useragent ライブラリを使用してランダムなユーザー エージェントを生成し、Selenium などのツールを使用してブラウザーの操作をシミュレートできます。

2. Web クローラーの基本概念

Web クローラーは、Web スパイダーまたは Web ロボットとも呼ばれ、Web サイトから Web ページ情報を自動的にクロールするプログラムです。インターネット。クローラーは通常、特定のルールに従って Web ページにアクセスし、有用なデータを抽出します。

3. Beautiful Soup および Requests ライブラリの紹介

  1. Beautiful Soup: HTML および XML ドキュメントを解析するための Python ライブラリで、Web からデータを抽出する簡単な方法を提供します。ページ。

  2. Requests: Web サイトにリクエストを送信し、応答コンテンツを取得するための、シンプルで使いやすい Python HTTP ライブラリです。

4. 対象の Web サイトを選択します

この記事では、Wikipedia のページを例として、ページ内のタイトルと段落情報を取得します。例を単純化するために、Python 言語の Wikipedia ページ (https://en.wikipedia.org/wiki/Python_(programming_ language)) をクロールします。

5. リクエストを使用して Web コンテンツを取得します

まず、Requests ライブラリをインストールします:

pip install requests

次に、Requests を使用してターゲット URL に GET リクエストを送信し、Web ページの HTML コンテンツを取得します:

import requests
 
url = "https://en.wikipedia.org/wiki/Python_(programming_language)"
response = requests.get(url)
html_content = response.text

6. Beautiful を使用します。 Web ページのコンテンツを解析するスープ

Beautiful Soup をインストールします:

pip install beautifulsoup4

次に、Beautiful Soup を使用して Web コンテンツを解析し、必要なデータを抽出します:

from bs4 import BeautifulSoup
 
soup = BeautifulSoup(html_content, "html.parser")
 
# 提取标题
title = soup.find("h2", class_="firstHeading").text
 
# 提取段落
paragraphs = soup.find_all("p")
paragraph_texts = [p.text for p in paragraphs]
 
# 打印提取到的数据
print("Title:", title)
print("Paragraphs:", paragraph_texts)

7.必要なデータを保存してください

抽出したデータをテキスト ファイルに保存します:

with open("wiki_python.txt", "w", encoding="utf-8") as f:
    f.write(f"Title: {title}\n")
    f.write("Paragraphs:\n")
    for p in paragraph_texts:
        f.write(p)
        f.write("\n")

以上がBeautifulSoup と Requests を使用して Python クローラーを使用して Web ページ データをクロールする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。