2012-02-07 73 views
1

我在Python中使用Mechanize來執行一些網頁抓取。大多數網站都可以正常工作,但某個特定頁面不會返回任何內容或響應。機械化響應不返回內容

我的設置是

self._browser = mechanize.Browser() 
self._browser.set_handle_refresh(True) 
self._browser.set_debug_responses(True) 
self._browser.set_debug_redirects(True) 
self._browser.set_debug_http(True) 

和執行的代碼是:

response = self._browser.open(url) 

這是調試輸出:

add_cookie_header 
Checking xyz.com for cookies to return 
- checking cookie path=/ 
- checking cookie <Cookie ASP.NET_SessionId=j3pg0wnavh3yjseyj1v3mr45 for xyz.com/> 
    it's a match 
send: 'GET /page.aspx?leagueID=39 HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: xyz.com\r\nCookie: ASP.NET_SessionId=aapg9wnavh3yqyrtg1v3ar45\r\nConnection: close\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2\r\n\r\n' 
reply: 'HTTP/1.1 200 OK\r\n' 
header: Date: Tue, 07 Feb 2012 19:04:37 GMT 
header: Pragma: no-cache 
header: Expires: -1 
header: Connection: close 
header: Cache-Control: no-cache 
header: Content-Length: 0 
extract_cookies: Date: Tue, 07 Feb 2012 19:04:37 GMT 
Pragma: no-cache 
Expires: -1 
Connection: close 
Cache-Control: no-cache 
Content-Length: 0 

我一直有和沒有重定向嘗試徒勞無功。有任何想法嗎?

我可能會添加頁面在瀏覽器中正常工作。

回答

1

找出通常是問題的程序是這樣的一個:

  1. 捕捉你的網頁瀏覽器流量時試圖打開URL
時成功打開的URL
  • 捕獲蟒蛇交通

    第一步,有很多工具可用。例如,在Firefox中,HttpFoxLive HTTP Headers可能非常有用。

    對於第二步,以編程方式記錄正在發送/接收的標頭應該足夠了。

    對於這兩個步驟,您還可以使用諸如wireshark之類的東西來捕獲網卡中的流量。

  • +0

    調試代理(如fiddler或charles)比wireshark的工作要好得多。 – pguardiario 2012-02-08 02:40:13

    +0

    @pguardiario感謝您的評論。我從來沒有使用過它們,但看起來它們也可以有用(即使它們不是開源的)。 – jcollado 2012-02-08 07:46:01

    +0

    我在Chrome中啓用了開發者會話,似乎可以幫助我解決問題。謝謝 – 2012-02-08 10:28:51