2016-04-02 8 views
0

私は以下のコードを使用してデータを取得できるかどうかを確認しようとしています。なんらかの理由で、beautifulsoupプリントアウトには私が見るデータが含まれていません。私はどこが間違っているのだろうと思っています。私は別の種類のヘッダーを試していましたが、これは私の問題があると思うところですが、私は間違っているかもしれません。例えば、私は、ブラウザ上でページを閲覧する場合は、次のパスを見つけることができませんよ:<div class="textbold font-medium ng-binding">$25,000</div>urllib2がウェブサイトのPython 2.7から適切なデータを取得していない

import urllib2 
from bs4 import BeautifulSoup 
url='https://www.prosper.com/listings#/detail/4964721' 
hdr = {'Accept': 'text/html,application/xhtml+xml,*/*',"user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36"} 
req=urllib2.Request(url,headers=hdr) 
html = urllib2.urlopen(req) 
soup=BeautifulSoup(html,"lxml") 
print soup 
+0

あなたはあなたが見ているデータとあなたが見たいものを共有できますか? – Sanj

+0

かなり大きいですが、ブラウザでそのページを見るだけで、私が提供したコードを使ってページを印刷することができます。そして、それらは同じものではありません。私は小さな例を提供しましたが、十分でないかどうか私に教えてください。 – FancyDolphin

+0

ほとんどのページは、ブラウザで解釈されたJavaScriptコードによって生成されたようです。しかし、BeautifulSoupにはJavaScriptエンジンがありません。たとえば、セレンを使用しようとする可能性があります。 http://stackoverflow.com/questions/2148493/scrape-html-generated-by-javascript-with-pythonを参照してください。 – mzjn

答えて

3

のURL REPONSEはあなたの例に基づいて本

html = urllib2.urlopen(req).read() 

ように読む必要があり、それが表示されますレンダリングされたhtmlを探しています。あなたのケースでは

は、AJAXリクエストが

"https://www.prosper.com/listings/search?options=%7B%22listing_number%22:4964721,%22resp_fields%22:%22BROWSE_LISTING%22,%22orderservice_call%22:%22Y%22%7D"

に行われ、このAJAX要求に対する応答は、UIへの上にレンダリングされるJSONです。

+0

私はしませんそれが問題であるとか、必ずしも問題ではないと思うなら、あなたはまだ私が示した例を手に入れることはできません。 – FancyDolphin

+0

「https://www.prosper.com/listings/search?options=%7B%22listing_number%22:4964721,%22resp_fields%22:%22BROWSE_LISTING%22,%22orderservice_call%22:%22Y%22」へのajaxリクエスト%7D "はページの読み込み時に実行されます。 – Sanj

+0

a)その返事が好きで、そのAjaxリクエストはどうやって見つかりましたか? b)セレンを避けることができると思いますか? (C) – FancyDolphin

関連する問題