【问题标题】:Error in Python Mechanize - "mechanize._mechanize.BrowserStateError: not viewing HTML"Python Mechanize 中的错误 - “mechanize._mechanize.BrowserStateError:未查看 HTML”
【发布时间】:2010-08-12 05:18:22
【问题描述】:
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

谁能帮忙?

【问题讨论】:

    标签: python mechanize


    【解决方案1】:

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

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

    现在br.viewing_html() 将评估为 True

    【讨论】:

      【解决方案2】:

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

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

      也许你得到的响应是 XHTML,或者有无效的标题?可能有一些方法可以覆盖is_html 属性(如here)。

      【讨论】:

      • 有人发现这个斜纹函数是如何转化为机械化的吗?
      【解决方案3】:

      在 br.open 之前将您的应用作为浏览器引入可能会有所帮助:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-21
        • 2015-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-17
        相关资源
        最近更新 更多