技術共有

Python クローラーと出力

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Python クローラーと出力例

以下は、特定の Web ページをクロールする Python で書かれた単純な Web クローラーの例です (たとえば、https://example.com , ただし、実際に使用する場合はクロールが許可されている実際のWebサイトのタイトル(Title)に置き換えて印刷する必要があるので注意してください。実際の Web サイトに直接アクセスしてスクレイピングするには、著作権や法的問題が伴う可能性があるため、ここでは概念的な例のみを提供します。

このタスクを実行するには、Python のrequestsHTTPリクエストを送信して使用するライブラリBeautifulSoup HTML コンテンツを解析するライブラリ。これらのライブラリをまだインストールしていない場合は、pip 経由でインストールできます。

  1. bash复制代码
  2. pip install requests beautifulsoup4

完全なコード例は次のとおりです。

  1. # 导入必要的库
  2. import requests
  3. from bs4 import BeautifulSoup
  4. def fetch_website_title(url):
  5. """
  6. 抓取指定网页的标题并返回。
  7. 参数:
  8. url (str): 需要抓取的网页的URL。
  9. 返回:
  10. str: 网页的标题,如果抓取失败则返回None。
  11. """
  12. try:
  13. # 发送HTTP GET请求
  14. response = requests.get(url)
  15. # 检查请求是否成功
  16. if response.status_code == 200:
  17. # 使用BeautifulSoup解析HTML内容
  18. soup = BeautifulSoup(response.text, 'html.parser')
  19. # 查找网页的<title>标签
  20. title_tag = soup.find('title')
  21. # 如果找到<title>标签,则返回其内容
  22. if title_tag:
  23. return title_tag.get_text(strip=True)
  24. else:
  25. return "No title found."
  26. else:
  27. return f"Failed to retrieve the webpage. Status code: {response.status_code}"
  28. except requests.RequestException as e:
  29. return f"Error fetching the webpage: {e}"
  30. # 示例URL(请替换为我们要抓取的网页的URL)
  31. url = 'https://example.com'
  32. # 调用函数并打印结果
  33. title = fetch_website_title(url)
  34. print(f"The title of the webpage is: {title}")

知らせ

(1) 原因https://example.comたとえば、 はプレースホルダーなので、実行時にクロールできる有効な Web ページ URL に置き換える必要があります。

(2) クローラーは、実行時にターゲット Web サイトの要件に準拠する必要があります。robots.txtこの文書では、ウェブサイトの著作権とアクセス制限の尊重について規定しています。

(3) 一部の Web サイトでは、ユーザー エージェント チェック、頻度制限などのクローラー対策メカニズムが設定されている場合があります。リクエスト ヘッダー (たとえば、User-Agent)、またはプロキシなどの方法を使用してこれらの制限を回避します。

(4) より複雑な Web ページ構造またはより高度なデータ キャプチャ要件については、HTML、CSS セレクター、XPath、およびネットワーク リクエストについてさらに学ぶ必要がある場合があります。

2. より詳細なコード例

以下は、より詳細な Python クローラー コードの例です。今回は使用します。requestsHTTPリクエストを送信して使用するライブラリBeautifulSoup実際の Web サイトをクロールするために HTML コンテンツを解析するライブラリ (たとえば、https://www.wikipedia.org例ですが、実際のクロールはウェブサイトの規定に準拠する必要があることに注意してください。robots.txt規制と著作権ポリシー)。

まず、インストールされていることを確認してくださいrequestsそしてbeautifulsoup4図書館。インストールされていない場合は、pip を使用してインストールします。

  1. bash复制代码
  2. pip install requests beautifulsoup4

次に、次のコードを使用して、Wikipedia ホームページのタイトルを取得して出力します。

  1. # 导入必要的库  
  2. import requests  
  3. from bs4 import BeautifulSoup  
  4.  
  5. def fetch_and_parse_title(url):  
  6.    """  
  7.   发送HTTP GET请求到指定的URL,解析HTML内容,并返回网页的标题。  
  8.  
  9.   参数:  
  10.   url (str): 需要抓取的网页的URL。  
  11.  
  12.   返回:  
  13.   str: 网页的标题,如果抓取或解析失败则返回相应的错误消息。  
  14.   """  
  15.    try:  
  16.        # 发送HTTP GET请求  
  17.        headers = {  
  18.            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'  
  19.       }  # 设置User-Agent来模拟浏览器访问  
  20.        response = requests.get(url, headers=headers)  
  21.  
  22.        # 检查请求是否成功  
  23.        if response.status_code == 200:  
  24.            # 使用BeautifulSoup解析HTML内容  
  25.            soup = BeautifulSoup(response.text, 'html.parser')  
  26.  
  27.            # 查找网页的<title>标签  
  28.            title_tag = soup.find('title')  
  29.  
  30.            # 提取并返回标题内容  
  31.            if title_tag:  
  32.                return title_tag.get_text(strip=True)  
  33.            else:  
  34.                return "No title found in the webpage."  
  35.        else:  
  36.            return f"Failed to retrieve the webpage. Status code: {response.status_code}"  
  37.    except requests.RequestException as e:  
  38.        return f"Error fetching the webpage: {e}"  
  39.  
  40. # 示例URL(这里使用Wikipedia的主页作为示例)  
  41. url = 'https://www.wikipedia.org'  
  42.  
  43. # 调用函数并打印结果  
  44. title = fetch_and_parse_title(url)  
  45. print(f"The title of the webpage is: {title}")

このコードは、最初にリクエスト ヘッダー (headers)、これには、User-Agent一部の Web サイトでは、クローラー アクセスを防ぐためにリクエスト ヘッダーをチェックするため、これは実際のブラウザー アクセスをシミュレートするためのものです。次に、指定された URL に GET リクエストを送信し、BeautifulSoup を使用して返された HTML コンテンツを解析します。次に、HTML を検索します。<title>タグを付け、そのテキスト内容を Web ページのタイトルとして抽出します。最後に、タイトルをコンソールに出力します。

この例では例として Wikipedia を使用していますが、実際のプロジェクトでは常にターゲット Web サイトの内容に従う必要があることに注意してください。robots.txtクロールの実践が合法的かつ倫理的であることを保証するための文書と著作権ポリシー。