Mechanize响应不返回任何内容

时间:2012-02-07 19:14:00

标签: python web screen-scraping mechanize

我在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

我尝试使用和不使用Redirect都无济于事。有什么想法吗?

我可以在浏览器中添加页面。

1 个答案:

答案 0 :(得分:1)

找出问题通常是这个问题的程序:

  1. 成功打开网址时捕获网络浏览器流量
  2. 尝试打开网址时捕获python流量
  3. 第一步,有许多工具可用。例如,在Firefox中,HttpFoxLive HTTP Headers可能非常有用。

    对于第二步,以编程方式记录发送/接收的标头应该足够了。

    对于这两个步骤,您还可以使用wireshark等内容捕获网卡中的流量。