新浪ニュースの詳細ページからのデータキャプチャの例
前の記事「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(''))
- 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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

Pythonasyncioについて...

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

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

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