【问题标题】:Python Mechanize won't open these sitesPython Mechanize 不会打开这些网站
【发布时间】:2011-12-15 23:05:21
【问题描述】:

我正在使用 Python 的 Mechanize 模块。我遇到了 3 个不同的网站,它们无法通过机械化直接打开:

  1. en.wikipedia.org/wiki/Dog(新用户,不能发布超过 2 个链接 T-T)
  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)
    

添加以下代码允许 mechanize 打开并解析维基百科文章和 google 搜索结果:

    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')] 

但是,我的解决方法与 CPSC.gov 网站不匹配 - 当我尝试使用 mechanize Browser 打开它时,我的 python 冻结了 - 以至于我什至无法通过键盘中断它。

这是怎么回事?

【问题讨论】:

    标签: python mechanize


    【解决方案1】:

    对于 cpsc.gov 站点,似乎有一个 refresh 标头没有被机械化 HTTPRefreshProcessor 正确处理。但是,您可以通过以下方式解决此问题:

    import mechanize
    
    url = 'http://www.cpsc.gov/cpscpub/prerel/prhtml03/03059.html'
    br = mechanize.Browser()
    br.set_handle_refresh(False)
    br.open(url)
    

    【讨论】:

    • 你是老板!我能问一下你是怎么知道我的问题的答案的吗?
    • 我注意到可以使用urllib2.urlopen 和mechanize.urlopen 打开网址。之后,我比较了每个开瓶器的处理程序(urllib2._opener、mechanize._opener 和mechanize.Browser())并查看了来自HttpFox 的痕迹。经过几次尝试,我发现移除刷新处理器是正确的解决方案。
    • 我花了一段时间才到这里!谢谢,这是为我做的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多