導入
技術エンジニアとして、私たちは忙しい仕事の中でホットなニュースを閲覧する時間がないかもしれませんが、テクノロジーを理解している私たちは、現在起こっている主要なイベントを確認するために Web サイトにアクセスする必要はありません。 hottest news. News, この記事では、Python を使用して Baidu News のページ コンテンツをクロールする方法を紹介します。
環境整備
使用するライブラリは全てよく使われるライブラリであり、requests
今回beautifulsoup
使用したライブラリです インストールコマンドは以下の通りです。
pip install requests beautifulsoup4
ページコンテンツを取得する
まず、リクエスト ライブラリを使用して HTTP リクエストを送信し、Web ページのコンテンツを取得します。サンプルコードは次のとおりです。
import requests
url = 'http://news.baidu.com/'
response = requests.get(url)
html = response.text
print(html)
上記のコードでは、リクエスト ライブラリを使用して GET リクエストを送信し、response.text 属性を通じて Web ページの HTML コンテンツを取得します。
次に、BeautifulSoup ライブラリを使用して、取得した HTML コンテンツを解析し、必要な情報を抽出します。サンプルコードは次のとおりです。
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
news_list = soup.find_all('a', class_='f-title')
for news in news_list:
print(news.get('href'))
print(news.get_text())
上記のコードでは、BeautifulSoup
ライブラリを使用して HTML コンテンツを解析し、メソッドを通じてクラスを持つすべてのタグをfind_all
検索し、メソッドを通じてリンクとタイトルを取得します。"f-title"
get
ニュース内容を分析する
前のステップで、ニュースのリンクとタイトルを取得しました。次に、ニュースの内容をさらに分析する必要があります。
まず、前述のリクエスト ライブラリを使用して、ニュース リンクの HTTP リクエストを送信し、ニュース詳細の HTML を取得します。サンプルコードは次のとおりです。
news_url = 'http://news.baidu.com/some_news_url'
news_response = requests.get(news_url)
news_html = news_response.text
print(news_html)
次に、BeautifulSoup ライブラリを使用してニュースの HTML コンテンツを解析し、ニュースのテキスト コンテンツを抽出します。サンプルコードは次のとおりです。
news_soup = BeautifulSoup(news_html, 'html.parser')
news_content = news_soup.find('div', class_='news-content')
print(news_content.get_text())
上記のコードでは、ニュース コンテンツが配置されているラベルのクラス属性が「news-content」であると仮定し、メソッドを通じてfind
ラベルを検索し、get_text
メソッドを通じてラベル内のテキスト コンテンツを取得します。
データの保存と処理
最初の 2 つのステップで、ニュースのリンク、タイトル、コンテンツを取得しました。次に、このデータをローカル ファイルまたはデータベースに保存するか、さらなるデータ処理を実行できます。
データを保存する一般的な方法は、データを CSV ファイルに書き込むことです。サンプルコードは次のとおりです。
import csv
data = [['链接', '标题', '内容'],
['http://news.baidu.com/some_news_url', '新闻标题1', '新闻内容1'],
['http://news.baidu.com/some_news_url', '新闻标题2', '新闻内容2'],
['http://news.baidu.com/some_news_url', '新闻标题3', '新闻内容3']]
with open('news.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerows(data)
上記のコードでは、まずニュースのリンク、タイトル、内容を含む 2 次元のリスト データを定義します。次に、csv ライブラリを使用して、データを news.csv という名前のファイルに書き込みます。
注: Web サイトのデータをクロールする場合は、法的紛争を避けるために、関連する法律、規制、および Web サイトの使用ポリシーを必ず遵守してください。