2013-10-20 35 views
1

我看了herehere瞭解我的問題,但沒有運氣。urllib2中的不同數據比Safari的Web Inspector

我做了一些旨在抓取網頁源代碼的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檢查:

Web Inspector


返回的代碼是不同的,但是,對於谷歌搜索爲「彩虹」。

我的Python:

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

Web檢查:

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

據我所知,好像是我的代碼是缺少大量無處不}catch(e){gbar_._DumpException(e)}線的那出現在Web Inspector代碼中。另外,我的代碼只有78行,而Web Inspector代碼有235行。這是否意味着我的代碼沒有獲取所有的JavaScript或網頁的其他部分?如何讓我的代碼檢索與Web Inspector相同的數據?

+0

刪除返回的「內容」中的標題,將其保存爲html文件,然後在瀏覽器中查看該標題。 – martineau

+0

考慮到從Python使用Mozilla作爲用戶代理,是否使用了與Safari相同的用戶代理? –

+0

@PauloBu是的。標題逐字從Safari Web Inspector複製。 –

回答

1

您使用了錯誤的鏈接與谷歌進行搜索查看─正確的鏈接應該是:的

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

代替:

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

第二個鏈接會導致重定向到與谷歌的主頁時在python中使用,因爲它在Safari中不使用時是不正確的(出於某種原因)。這就是代碼不同的原因。

相關問題