首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python机械化错误- "mechanize._mechanize.BrowserStateError: not viewing HTML“

Python机械化错误- "mechanize._mechanize.BrowserStateError: not viewing HTML“
EN

Stack Overflow用户
提问于 2010-08-12 13:18:23
回答 3查看 5.8K关注 0票数 6
代码语言:javascript
复制
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的页面链接链接...以及来自特定页面的数据链接。然后,它进入每个数据链接并提取一些数据,当完成后,它移动到下一页。但我总是得到这样的错误:

代码语言:javascript
复制
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

有人能帮上忙吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-12 17:25:09

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

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

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

票数 2
EN

Stack Overflow用户

发布于 2010-11-17 10:41:41

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

代码语言:javascript
复制
br.open('http://example.com')
br._factory.is_html = True

现在br.viewing_html()的计算结果为True

票数 6
EN

Stack Overflow用户

发布于 2015-11-04 13:04:22

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

代码语言:javascript
复制
br.addheaders = [('User-agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/45.0.2454101')]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3464931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档