Urllib2获取不同的html源代码

时间:2013-05-20 22:44:48

标签: python html web screen-scraping urllib2

我希望使用urllib2的http://fiverr.com/logo_business/design-a-killer-high-quality-effective-and-custom-made-logo-for-your-company-business-website-or-personal-use HTML。 但它没有给我通过我的浏览器获得的HTML ...

我的代码:

import urllib2
request = urllib2.Request('http://fiverr.com/logo_business/design-a-killer-high-quality-effective-and-custom-made-logo-for-your-company-business-website-or-personal-use')
opener = urllib2.build_opener()
request.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20130406 Firefox/23.0')
data = opener.open(request).read()
print data

任何人都可以帮助我吗?我做错了什么?

我需要的具体事情是“Gig Paused”文字。 演出一旦取消暂停,我想联系卖家。 :)

2 个答案:

答案 0 :(得分:1)

该网站正在发送数据gzip。 urllib2无法解决开箱即用的问题,但您可以使用requests轻松访问它:

url = 'http://fiverr.com/logo_business/design-a-killer-high-quality-effective-and-custom-made-logo-for-your-company-business-website-or-personal-use'
print 'Gig Paused' in requests.get(url, headers={'User-Agent': ''}).text

答案 1 :(得分:0)

此问题与浏览器有关(看似 Chrome '而urllib2没有错误)

这只是答案的一小部分,但我希望它对某人有帮助。

我发现了同样的问题。我尝试使用brrequests,但无济于事:他们都得到与urllib2相同的结果,我认为这是错误的,因为它与我看到的不匹配Chrome(Mac OSX 10.10 - Yosemite)。

但是,使用Firefox和Safari进一步测试成功检索到与urllib2相同的网址,我已经确认这是正确的。

所以,正如Martijn Pieters所说,问题似乎与urllib2无关,但 与Chrome 有很大关系,至少在我的情况下如此

我的建议是,如果你有办法告诉你这是你的情况,那就是在Firefox / Safari上找到你想要的链接,然后实现你的代码以匹配Python上的链接。

或者,您必须使用标题,直到找到确切的结果。同样,在我的情况下,Chrome链接完全错误,因此我反对使用标题来匹配Chrome显示的内容。