我想从亚马逊提取一些数据(以下代码中的链接)
这是我的代码:
import urllib2
url="http://www.amazon.com/s/ref=sr_nr_n_11?rh=n%3A283155%2Cn%3A%2144258011%2Cn%3A2205237011%2Cp_n_feature_browse-bin%3A2656020011%2Cn%3A173507&bbn=2205237011&sort=titlerank&ie=UTF8&qid=1393984161&rnid=1000"
webpage=urllib2.urlopen(url).read()
doc=open("test.html","w")
doc.write(webpage)
doc.close()
当我打开test.html时,我的网页内容与互联网上的网站不同。
答案 0 :(得分:1)
该页面涉及javascript执行。
urllib2.urlopen(..).read()
只需阅读网址内容即可。所以他们是不同的。
要获得相同的内容,您需要使用可以处理javascript的库。
例如,以下代码使用selenium
:
from selenium import webdriver
url = 'http://www.amazon.com/s/ref=sr_nr_n_11?...161&rnid=1000'
driver = webdriver.Firefox()
driver.get(url)
with open('test.html', 'w') as f:
f.write(driver.page_source.encode('utf-8'))
driver.quit()
答案 1 :(得分:0)
完成falsetru的答案:
另一种解决方案是使用python-ghost。它基于Qt。安装起来要重得多,所以我也建议Selenium。
使用Firefox会在脚本执行时打开它。如果没有它,请使用PhantomJS:
apt-get install nodejs # you get npm, the Node Package Manager
npm install -g phantomjs # install globally
[…]
driver = webdriver.PhantomJS()