ホームページ バックエンド開発 Python チュートリアル 新浪ニュースの詳細ページからのデータキャプチャの例

新浪ニュースの詳細ページからのデータキャプチャの例

Jun 21, 2017 pm 03:23 PM
python シナ ニュース 爬虫類 詳細

前の記事「Python クローラー: 新浪ニュースのデータのキャプチャ」では、新浪ニュースの詳細ページの関連データをクロールする方法について詳しく説明しましたが、コードの構築は、新しい詳細ページが作成されるたびに拡張されます。クロールされると再作成する必要があるため、簡単に直接呼び出せるように関数にまとめる必要があります。

詳細ページで取得した6つのデータ:ニュースタイトル、コメント数、時間、ソース、本文、担当編集者。

まず、コメント数を関数形式に整理します:

 1 import requests 2 import json 3 import re 4  5 comments_url = '{}&group=&compress=0&ie=utf-8&oe=utf-8&page=1&page_size=20' 6  7 def getCommentsCount(newsURL): 8     ID = re.search('doc-i(.+).shtml', newsURL) 9     newsID = ID.group(1)10     commentsURL = requests.get(comments_url.format(newsID))11     commentsTotal = json.loads(commentsURL.text.strip('var data='))12     return commentsTotal['result']['count']['total']13 14 news = ''15 print(getCommentsCount(news))
ログイン後にコピー

5行目 comments_url 前の記事では、コメントリンクにニュースIDがあり、そのコメント数がわかっています。異なるニュースがニュースを通過する ID が変わるため、フォーマットしてニュース ID を中括弧 {} に置き換えます。関数 getCommentsCount を定義してコメント数を取得し、通常のルールに従って一致するニュース ID を見つけて保存します。取得したニュース リンク 変数 commentsURL を入力し、JS をデコードして最終的なコメント数、commentsTotal を取得します

その後、新しいニュース リンクを入力し、関数 getCommentsCount を直接呼び出してコメント数を取得するだけです。

最後に、関数 getNewsDetail にキャプチャする必要がある 6 つのデータを整理します。次のように:

 1 from bs4 import BeautifulSoup 2 import requests 3 from datetime import datetime 4 import json 5 import re 6  7 comments_url = '{}&group=&compress=0&ie=utf-8&oe=utf-8&page=1&page_size=20' 8  9 def getCommentsCount(newsURL):10     ID = re.search('doc-i(.+).shtml', newsURL)11     newsID = ID.group(1)12     commentsURL = requests.get(comments_url.format(newsID))13     commentsTotal = json.loads(commentsURL.text.strip('var data='))14     return commentsTotal['result']['count']['total']15 16 # news = 'http://news.sina.com.cn/c/nd/2017-05-14/doc-ifyfeius7904403.shtml'17 # print(getCommentsCount(news))18 19 def getNewsDetail(news_url):20     result = {}21     web_data = requests.get(news_url)22     web_data.encoding = 'utf-8'23     soup = BeautifulSoup(web_data.text,'lxml')24     result['title'] = soup.select('#artibodyTitle')[0].text25     result['comments'] = getCommentsCount(news_url)26     time = soup.select('.time-source')[0].contents[0].strip()27     result['dt'] = datetime.strptime(time,'%Y年%m月%d日%H:%M')28     result['source'] = soup.select('.time-source span span a')[0].text29     result['article'] = ' '.join([p.text.strip() for p in soup.select('#artibody p')[:-1]])30     result['editor'] = soup.select('.article-editor')[0].text.lstrip('责任编辑:')31     return result32 33 print(getNewsDetail(''))
ログイン後にコピー
関数 getNewsDetail で、キャプチャする必要がある 6 つのデータを取得し、結果に入力します。

    result['title'] はニュースのタイトルを取得します。
  • resul[ 'comments'] は、最初に定義したコメント数関数 getCommentsCount を直接呼び出すことができます。
  • result['dt'] は取得時間です。 source'] は取得元です;
  • result ['article'] は本文を取得します;
  • result['editor'] は担当編集者を取得します。
  • 次に、データを取得したいニュースリンクを入力し、この関数を呼び出します。

結果の一部:

{'title': '浙江大学付属高校の詠春拳の「先生」はイップ・マンの三代目弟子', 'comments': 618, ' dt': datetime.datetime(2017 , 5, 14, 7, 22), 'source': 'China News Network', 'article': '原題: 浙江大学付属高校が詠春拳「講師」の指導を開始イップ・マン...出典: Qianjiang Evening News、'editor': 'Zhang Di'}

以上が新浪ニュースの詳細ページからのデータキャプチャの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PythonインタープリターはLinuxシステムで削除できますか? PythonインタープリターはLinuxシステムで削除できますか? Apr 02, 2025 am 07:00 AM

Linux Systemsに付属するPythonインタープリターを削除する問題に関して、多くのLinuxディストリビューションは、インストール時にPythonインタープリターをプリインストールし、パッケージマネージャーを使用しません...

Pythonでのカスタムデコレータのパイランスタイプ検出の問題を解決する方法は? Pythonでのカスタムデコレータのパイランスタイプ検出の問題を解決する方法は? Apr 02, 2025 am 06:42 AM

Pythonプログラミングでカスタムデコレーターを使用する場合、Pylance Type検出問題解決策デコレーターは、行を追加するために使用できる強力なツールです...

PythonのTQDMでの印刷によって引き起こされる進行状況バーの問題を避ける方法は? PythonのTQDMでの印刷によって引き起こされる進行状況バーの問題を避ける方法は? Apr 01, 2025 pm 11:48 PM

ループ内で印刷を使用する場合、PythonのTQDMライブラリを使用する場合、PythonのTQDMでの印刷によって引き起こされる進行状況バーの問題を避けてください...

PythonのHTTPXライブラリを使用してHTTP/2 POSTリクエストを送信する方法は? PythonのHTTPXライブラリを使用してHTTP/2 POSTリクエストを送信する方法は? Apr 01, 2025 pm 11:54 PM

PythonのHTTPXライブラリを使用してHTTP/2を送信します...

FastapiとAIOHTTPは同じグローバルイベントループを共有していますか? FastapiとAIOHTTPは同じグローバルイベントループを共有していますか? Apr 02, 2025 am 06:12 AM

Pythonの非同期ライブラリ間の互換性の問題Python、非同期プログラミングは、高い並行性とI/Oのプロセスになりました...

Python 3.6のロードピクルスファイルエラーmodulenotfounderror:ピクルスファイル「__builtin__」をロードした場合はどうすればよいですか? Python 3.6のロードピクルスファイルエラーmodulenotfounderror:ピクルスファイル「__builtin__」をロードした場合はどうすればよいですか? Apr 02, 2025 am 06:27 AM

Python 3.6のピクルスファイルの読み込みエラー:modulenotfounderror:nomodulenamed ...

See all articles