代码之家  ›  专栏  ›  技术社区  ›  Shubham

python mechanicy中出错-“mechanicy.\u mechanicy.browserstateerror:not viewing html”

  •  6
  • Shubham  · 技术社区  · 16 年前
    for link in br.links(url_regex="inquiry-results.jsp"):
        cb[link.url] = link
    
    for page_link in cb.values():               
       for link in br.links(url_regex="inquiryDetail.jis"): 
                ....................
          url = link.absolute_url
          br.follow_link(link)
                ......................
       br.follow_link(page_link)
    

    这是我的密码。基本上,它从特定页面提取页面链接[第1、2、3、4、5页的链接…]和数据链接。然后,它进入每个数据链接并提取一些数据,完成后将移动到下一页。但我总是得到这个错误:

    Traceback (most recent call last):
      File "C:\python27\test.py", line 95, in <module>
        for link in br.links(url_regex="inquiryDetail.jis"):
      File "build\bdist.win32\egg\mechanize\_mechanize.py", line 405, in links
    mechanize._mechanize.BrowserStateError: not viewing HTML
    

    有人能帮忙吗?

    3 回复  |  直到 10 年前
        1
  •  2
  •   loevborg    16 年前

    这似乎与检查响应是否为有效的HTML相关:

    http://github.com/jjlee/mechanize/blob/master/mechanize/_mechanize.py#L440

    也许您得到的响应是XHTML,或者头无效?可能有某种方法可以覆盖 is_html 属性(类) here )

        2
  •  6
  •   A B    15 年前

    感谢Loevborg发布的链接,我一直在使用这个:

    br.open('http://example.com')
    br._factory.is_html = True
    

    现在 br.viewing_html() 将计算为真

        3
  •  0
  •   gvlasov    10 年前

    在br.open之前将您的应用程序作为浏览器进行介绍可能会有帮助:

    br.addheaders = [('User-agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/45.0.2454101')]