urllib2中的数据与Safari的Web Inspector中的数据不同

时间:2013-10-20 14:25:45

标签: python html safari urllib2 web-inspector

我查看herehere了解我的问题,但没有运气。

我制作了一些python代码,旨在抓取网页的源代码,就像在Safari的Web Inspector中一样。但是,我从我的应用程序和Safari的Web Inspector获取了不同的代码。到目前为止,这是我的代码:

#!/usr/bin/python

import urllib2

# headers

hdr = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.28.10 (KHTML, like Gecko) Version/6.0.3 Safari/536.28.10',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Cache-Control': 'max-age=0'}

# request data

req = urllib2.Request("https://www.google.com/#q=rainbow&safe=active", headers=hdr)

# try to get data
try:
    page = urllib2.urlopen(req)
    print page.info()
except urllib2.HTTPError, e:
    print e.fp.read()


content = page.read()

#print content

print content 

标题符合Web Inspector中的内容:

Web Inspector


返回的代码不同,谷歌搜索“彩虹”。

我的python:

http://paste.ubuntu.com/6270549/

Web Inspector:

http://paste.ubuntu.com/6270606/

据我所知,似乎我的代码缺少Web Inspector代码中存在的大量无处不在的}catch(e){gbar_._DumpException(e)}行。此外,我的代码只有78行,而Web Inspector代码有235行。这是否意味着我的代码没有获得所有的javascript或网页的其他部分?如何让我的代码检索与Web Inspector相同的数据?

1 个答案:

答案 0 :(得分:1)

您使用错误的链接搜索谷歌搜索 - 正确的链接应该是:

https://www.google.com/search?q=rainbow&safe=active

而不是:

https://www.google.com/#q=rainbow&safe=active

第二个链接会在python中使用时导致重定向到Google的主页,因为在Safari中没有使用它时(由于某种原因)它是不正确的。这就是代码不同的原因。