首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只使用python下载amazon.co.uk网页,就像firebug看到的那样

只使用python下载amazon.co.uk网页,就像firebug看到的那样
EN

Stack Overflow用户
提问于 2012-02-23 12:31:51
回答 1查看 494关注 0票数 1

我注意到使用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为我指明了正确的方向,我们找到了解决方案,我们需要使用用户代理头。

先于

代码语言:javascript
复制
>>> import urllib2
>>> import re
>>> site = urllib2.urlopen('http://www.amazon.co.uk/\
Darkness-II-Limited-PC-DVD/dp/B005ULLEX6').read()
>>> re.search( 'prodImageCell', site )
>>>

代码语言:javascript
复制
>>> 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>

万岁!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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页。

噢,我刚才看到你用我以前的建议成功了。太棒了!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9413131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档