2013-05-01 76 views
1

我目前正在編寫一個腳本,它涉及(希望)屏幕從我的工作場所的網頁中抓取大量數據。它是一個ASP.NET頁面,在Chrome或Internet Explorer上查看時不需要登錄。UrlLib2 - 在請求工作場所網絡上的ASP.NET網站時拒絕訪問

我曾嘗試以「會議頂」我的Internet Explorer會話得到它通過在Python的urllib2讀,但是我還是拒絕訪問(增加的Internet Explorer是使用ASP.NET_Sessionid後...)

我承認對互聯網的知識知之甚少,所以我可能在這裏做錯了什麼,但我需要從Python訪問這個網頁。如果效果更好,我願意使用另一個庫。

回答

1

也許網頁正在檢查有效的請求標頭?

你真的應該使用pycurl來處理這類工作。

#!/usr/bin/env python 
import pycurl 
import cStringIO 
buf = cStringIO.StringIO() 

pycurl_headers = ['Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
        'Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3', 
        'Accept-Language:en-US,en;q=0.8,bg;q=0.6', 
        'User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 \ 
        (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31'] 


c = pycurl.Curl() 
c.setopt(c.URL, 'http://google.com') 
c.setopt(c.WRITEFUNCTION, buf.write) 
c.setopt(c.AUTOREFERER, 1) 
c.setopt(c.FOLLOWLOCATION , True) 
c.setopt(c.CONNECTTIMEOUT, 5) 
c.setopt(c.TIMEOUT, 5) 
c.setopt(c.HTTPHEADER, pycurl_headers) 
c.perform() 

print buf.getvalue() 
buf.close() 
+0

已經嘗試過,...複製了我的谷歌瀏覽器會話的確切頭數據(而這是請求我試圖解析網頁),並在我的urllib2請求使用它我...我甚至在頭文件中發送會話cookie ......我不知道我可能會泄漏哪些數據,這是告訴服務器我不是瀏覽器? – user2339421 2013-05-01 14:44:19

+0

請嘗試我的代碼,然後重新寫入。我的代碼發送引用並捕獲重定向。 – nacholibre 2013-05-01 14:53:16

相關問題