2010-08-12 81 views
6
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 ...的链接]和来自特定页面的数据链接。然后它进入每个数据链接并提取一些数据,完成后它移动到下一页。但我总是得到这个错误:Python机械化错误 - “mechanize._mechanize.BrowserStateError:not viewing HTML”

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 

任何人都可以帮忙吗?

回答

6

感谢张贴loevborg的链接,我一直在使用这样的:

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

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

0

介绍您的应用程序的浏览器之前br.open可能有助于这一点:

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