我注意到使用urllib下载一个网页:
http://www.amazon.co.uk/Darkness-II-Limited-PC-DVD/dp/B005ULLEX6
使用urlopen( url ).read()返回的内容与firebug看到的内容不同。
示例:
如果将firebug指向页面的图像区域,它会告诉您存在一个div id="prodImageCell",但是当查看python打开的内容时,没有这样的东西,因此美丽汤什么都找不到。
这是因为图像是使用javascript生成的吗?
问题:
如果是这样的话,是否有一种方式可以使用urllib (而不是使用Selenium之类的东西)来下载与firebug看到的几乎完全相同的东西。
我试图以编程的方式获取其中一个映像的源url,这里是带有prodImageCell with src=http://ecx.images-amazon.com/images/I/51uPDvJGS3L..jpg的div,它确实是图像的url。
答案:
因为我没有名声,所以不能正确回答:
由于@huelbois为我指明了正确的方向,我们找到了解决方案,我们需要使用用户代理头。
先于
>>> import urllib2
>>> import re
>>> site = urllib2.urlopen('http://www.amazon.co.uk/\
Darkness-II-Limited-PC-DVD/dp/B005ULLEX6').read()
>>> re.search( 'prodImageCell', site )
>>>后
>>> user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101\
Firefox/7.0.1"
>>> headers = {'User-Agent':user_agent}
>>> req = urllib2.Request(url=url,headers=headers)
>>> site = urllib2.urlopen(req).read()
>>> re.search( 'prodImageCell', site )
<_sre.SRE_Match object at 0x01487DB0>万岁!
发布于 2012-02-23 13:20:11
现在就用wget测试它(将像urrlib一样工作)。您必须包含用户代理头才能获得所请求的部件:
wget -头=‘用户-代理: Mozilla/5.0 (WindowsNT6.1;rv:9.0.1)壁虎/20100101火狐/9.0.1’http://www.amazon.co.uk/Darkness-II-Limited-PC-DVD/dp/B005ULLEX6
返回包含所请求部件的html页。
噢,我刚才看到你用我以前的建议成功了。太棒了!
https://stackoverflow.com/questions/9413131
复制相似问题