2016-10-14 1 views
1

以下のページから読者のコメントを抽出しようとしています。しかし、出力html test.htmlには、このページのコメントは含まれていません。この情報をPythonでどのように入手できますか?Python urllibはウェブサイトから読者のコメントを抽出していません

http://www.theglobeandmail.com/opinion/it-doesnt-matter-who-won-the-debate-america-has-already-lost/article32314064/comments/

from bs4 import BeautifulSoup 
import urllib 
import urllib.request 
import urllib.parse 

req =urllib.request.Request('http://www.theglobeandmail.com/opinion/it-doesnt-matter-who-won-the-debate-america-has-already-lost/article32314064/comments/') 
response = urllib.request.urlopen(req) 
the_page = response.read() 

soup = BeautifulSoup(the_page, 'html.parser') 
f = open('test.html', 'w') 
f.write(soup.prettify()) 
f.close() 

ありがとう!

+1

コメントはjsで取得される可能性が最も高いです。ブラウザー+ jsランタイム(pahtomjsなど)を組み込んだスクレイピングライブラリーを使用するか、コメント内のAPIが何であるかを把握して、それを直接使用することができます。 – pvg

答えて

0

コメントはあなたが模倣することができ、AJAXリクエスト使用して取得されます:あなたはそこに多数のパラメータがあるが、何以下であることは、結果を取得するのに十分で見ることができ、私はあなたにそれを残して

enter image description here

をあなたはそれが内部のURLにあるキーを解析したい場合は...

from json import loads 
from urllib.request import urlopen 
from urllib.parse import urlencode 

data = {"categoryID":"Production", 
    "streamID":"32314064", 
    "APIKey":"2_oNjjtSC8Qc250slf83cZSd4sbCzOF4cCiqGIBF8__5dWzOJY_MLAoZvds76cHeQD", 
    "callback" :"foo",} 
r = urlopen("http://comments.us1.gigya.com/comments.getComments", data=urlencode(data).encode("utf-8")) 
json_dcts = loads(r.read().decode("utf-8"))["comments"] 

print(json_dcts) 

negvotesなど、upvotes、あなたのすべてのコメントを保持dictsのリストを与える:あなたは結果に影響を与えることができる方法を見つけ出すしますスクリプトの1つsrc='https://cdns.gigya.com/js/socialize.js?apiKey=2_oNjjtSC8Qc250slf83cZSd4sbCzOF4cCiqGIBF8__5dWzOJY_MLAoZvds76cHeQD'のストリームIDは元のURLにあります。

+0

返信いただきありがとうございます!私はそれを試して、それは働いた。しかし、私はいくつかの質問があります: – user7009553

+0

最初に、あなたはURLを取得しましたか:http://comments.us1.gigya.com第2に、Pythonでajaxクエリを送信して、すべてのキー値ペアを取得して適切なデータ辞書。私はajaxクエリについて何も知らない。あなたはAJAXを理解するのに良い情報源を教えてください。 – user7009553

+0

@ user7009553、open firebug/chrome toolsなど。XHRの下のネットワークタブの下を見ると、リクエストが行われているのがわかる。 ajax - >非同期JavaScriptとXML https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started –

関連する問題