Python Mechanize不会打开这些网站

Mic*_*art 7 python mechanize

我正在使用Python的Mechanize模块.我遇到过3个不能直接通过机械化打开的网站:

  1. en.wikipedia.org/wiki/Dog(新用户,不能发布2个以上的链接TT)
  2. https://www.google.com/search?num=100&hl=en&site=&q=dog&oq=dog&aq=f&aqi=g10&aql=1&gs_sm=e&gs_upl=618l914l0l1027l3l2l0l0l0l0l173l173l0.1l1l0
  3. http://www.cpsc.gov/cpscpub/prerel/prhtml03/03059.html

    import mechanize
    br = mechanize.Browser()
    br.set_handle_robots(False)
    
    Run Code Online (Sandbox Code Playgroud)

添加以下代码允许机械化打开和解析维基百科文章和谷歌搜索结果:

    br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 
Run Code Online (Sandbox Code Playgroud)

但是,我的解决方法与CPSC.gov网站不匹配 - 当我尝试使用机械化浏览器打开它时,我的python冻结 - 到了我甚至无法键盘中断的程度.

这里发生了什么?

jco*_*ado 15

对于cpsc.gov站点,看起来像机械化HTTPRefreshProcessor没有正确处理刷新头.但是,您可以按如下方式解决问题:

import mechanize

url = 'http://www.cpsc.gov/cpscpub/prerel/prhtml03/03059.html'
br = mechanize.Browser()
br.set_handle_refresh(False)
br.open(url)
Run Code Online (Sandbox Code Playgroud)

  • 我注意到可以用`urllib2.urlopen`和`mechanize.urlopen`打开url.之后,我比较了每个开启者的处理程序(`urllib2._opener`,`mechanize._opener`和`mechanize.Browser()`)并查看[HttpFox]的痕迹(https://addons.mozilla.org/EN-US /火狐/插件/是HttpFox /).经过几次尝试,我发现删除刷新处理器是正确的解决方案. (3认同)