ホームページ  >  記事  >  バックエンド開発  >  Pythonを使用してjsのコンテンツをクロールする方法

Pythonを使用してjsのコンテンツをクロールする方法

零到壹度
零到壹度オリジナル
2018-04-10 09:54:129311ブラウズ


この記事の内容は、Pythonを使用してjsでコンテンツをクロールする方法を共有することです。必要な友達はそれを参照できます

1. 書くときに取得します。クローラーソフトウェア 必要なコンテンツに遭遇した場合、JavaScriptによって追加され、取得時に空である場合があります。例えば、新浪ニュースのコメント数を取得する場合、通常の方法では取得できません


通常の取得コード例:

import requests
from bs4 import BeautifulSoup

res = requests.get('http://news.sina.com.cn/c/nd/2017-06-12/doc-ifyfzhac1650783.shtml')
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')
#取评论数
commentCount = soup.select_one('#commentCount1')
print(commentCount.text)

この時点で得られる結果は空です。これは、コンテンツが js ファイルに保存されているためです

コメント内容を検索すると、変更されたIn jsに保存されていることが分かりました

該当する内容をjsonデータビューアに入れると、コメントの総数とコメントの内容が判明しました。 jsファイルにjson形式で保存



メッセージ内 ヘッダーには、jsファイルへのアクセスパスとリクエストメソッドが表示されます

コード例

import json
comments = requests.get('http://comment5.news.sina.com.cn/page/info?version=1&format=js&channel=gn&newsid=comos-fyfzhac1650783')
comments.encoding = 'utf-8'
print(comments)
jd = json.loads(comments.text.strip('var data=')) #移除改var data=将其变为json数据
print(jd['result']['count']['total'])

注: ここでは、var data= を取得する際の文字列プレフィックスが json データ形式に準拠していないため、var data= を削除する必要がある理由について説明します。そのため、リクエストから削除する必要があります。変換中のコンテンツ



なぜ jd['result'

][コメントの合計数を取得するときに

'count'を使用するのか]['total']


以上がPythonを使用してjsのコンテンツをクロールする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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