2010-08-12 5 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) 

Dies ist mein Code. Grundsätzlich extrahiert es Seitenlinks [Link von Seite 1,2,3,4,5 ...] und Datenlinks von bestimmten Seiten. Dann geht es in jede Datenverbindung und extrahiert einige Daten und wenn es fertig ist, bewegt es sich auf die nächste Seite. Aber ich bekomme immer diesen Fehler:Fehler in Python Mechanize - "mechanize._mechanize.BrowserStateError: HTML nicht anzeigen"

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 

Kann jemand helfen?

Antwort

2

Dies scheint eine Überprüfung verwandt zu sein, um zu sehen, ob die Antwort gültig HTML ist:

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

Vielleicht ist die Antwort, die Sie es XHTML erhalten, oder ungültigen Header hat? Möglicherweise gibt es eine Möglichkeit, das Attribut is_html (wie here) zu überschreiben.

+0

Hat jemand gefunden, wie diese Funktion in Köper Mechanize übersetzt? –

6

Dank der Verbindung von loevborg geschrieben, ich habe das schon mit:

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

Jetzt br.viewing_html() auf True

0

Führen Sie Ihre App als Browser bewerten, bevor br.open dies helfen kann:

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