2016-05-14 2 views
2

Ich versuche, ein HTML-Formular mit Robobrowser mit Python 3.4 zu kratzen. Ich benutze den Standard-HTML-Parser:Kratzen Sie ein Formular auf der falschen Webseite

self._browser = RoboBrowser(history=True, parser="html.parser") 

Es korrekte Web-Seiten funktioniert gut, aber jetzt habe ich falsch geschrieben Seite zu analysieren. Hier ist das HTML-Fragment:

<form method="post" action="decide.php?act=submit_advance"> 
    <table class="td_advanced"> 
    <tr class="td_advance"> 
    <td colspan="4" class="td_advance"></strong><br></td> 
    <td colspan="3" class="td_left">Case sensitive:<br><br></td> 
    <td><input type="checkbox" name="case_sensitive" /><br><br></td> 
[...] 
</form> 

Das Schließen strong Tag ist falsch. Dieser Fehler verhindert, dass der Parser aus lesen alle Eingänge im Anschluss an diese falsche tag:

form = self._browser.get_form() 
print(form) 
>>> <RoboForm> 

Irgendwelche Vorschläge?

+0

Wenn es einen Fehler in robobrowser ist, können Sie ein Problem auf Github einreichen. https://github.com/jmcarp/robobrowser –

+0

Ich denke beautifulsoup soll Tag Suppe verarbeiten, so dass wäre eine Option zu prüfen. –

Antwort

0

Ich habe die Lösung selbst gefunden. Der Kommentar über beesesoup war hilfreich und hat meine Suche auf eine richtige Art und Weise durchgeführt. Die Lösung ist: Verwenden Sie einen anderen HTML-Parser. Ich versuchte mit lxml und es funktioniert für mich.

self._browser = RoboBrowser(history=True, parser="lxml") 

Wie PyPI hat derzeit mit meinem Python-Version lxml Installateur arbeiten, die ich heruntergeladen habe es von hier: http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

Verwandte Themen