Python web scraping提供了错误的源代码

时间:2014-03-05 02:03:29

标签: python web-scraping amazon urllib2

我想从亚马逊提取一些数据(以下代码中的链接)

这是我的代码:

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时,我的网页内容与互联网上的网站不同。

2 个答案:

答案 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()