ホームページ >バックエンド開発 >Python チュートリアル >Beautiful Soup を使用してパブリック Web からデータを抽出する方法
Beautiful Soup は、Web ページからデータを収集するために使用される Python ライブラリです。 HTML および XML ドキュメントを解析するための解析ツリーを作成し、必要な情報を簡単に抽出できるようにします。
Beautiful Soup は、Web スクレイピングのためのいくつかの重要な機能を提供します。
Beautiful Soup を使用するには、lxml や html.parser などのパーサーとともにライブラリをインストールする必要があります。 pip
を使用してインストールできます。
#Install Beautiful Soup using pip. pip install beautifulsoup4 lxml
複数のページにまたがってコンテンツを表示する Web サイトを扱う場合、すべてのデータを収集するにはページネーションの処理が不可欠です。
import requests from bs4 import BeautifulSoup base_url = 'https://example-blog.com/page/' page_number = 1 all_titles = [] while True: # Construct the URL for the current page url = f'{base_url}{page_number}' response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') # Find all article titles on the current page titles = soup.find_all('h2', class_='article-title') if not titles: break # Exit the loop if no titles are found (end of pagination) # Extract and store the titles for title in titles: all_titles.append(title.get_text()) # Move to the next page page_number += 1 # Print all collected titles for title in all_titles: print(title)
抽出する必要があるデータが複数のタグ層内にネストされている場合があります。ネストされたデータ抽出を処理する方法は次のとおりです。
import requests from bs4 import BeautifulSoup url = 'https://example-blog.com/post/123' response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') # Find the comments section comments_section = soup.find('div', class_='comments') # Extract individual comments comments = comments_section.find_all('div', class_='comment') for comment in comments: # Extract author and content from each comment author = comment.find('span', class_='author').get_text() content = comment.find('p', class_='content').get_text() print(f'Author: {author}\nContent: {content}\n')
最近の Web サイトの多くは AJAX を使用してデータを動的に読み込みます。 AJAX を処理するには、ブラウザ開発者ツールを使用してネットワーク リクエストを監視し、スクレイパーでそれらのリクエストを複製するなど、さまざまなテクニックが必要です。
import requests from bs4 import BeautifulSoup # URL to the API endpoint providing the AJAX data ajax_url = 'https://example.com/api/data?page=1' response = requests.get(ajax_url) data = response.json() # Extract and print data from the JSON response for item in data['results']: print(item['field1'], item['field2'])
Web スクレイピングでは、法的、技術的、倫理的なリスクを慎重に検討する必要があります。適切な安全対策を実装することで、これらのリスクを軽減し、責任を持って効果的に Web スクレイピングを実行できます。
Beautiful Soup は、HTML および XML ドキュメントをナビゲートおよび検索するための使いやすいインターフェイスを提供することで、Web スクレイピングのプロセスを簡素化する強力なライブラリです。さまざまな解析タスクを処理できるため、Web からデータを抽出したい人にとって不可欠なツールになります。
以上がBeautiful Soup を使用してパブリック Web からデータを抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。