2010-03-24 8 views
17

Ich bin komplett neu in Python und verwende Python 3.1 unter Windows (pywin). Ich muss einige HTML analysieren, um im Wesentlichen zusätzliche Werte zwischen bestimmten HTML-Tags und bin verwirrt in meinem Array von Optionen, und alles, was ich finde, ist für Python 2.x geeignet. Ich habe Raves über Beautiful Soup, HTML5Lib und Lxml gelesen, aber ich kann nicht herausfinden, wie ich diese unter Windows installieren kann.Beste Bibliothek zum Parsen von HTML mit Python 3 und Beispiel?

Fragen:

  1. Welche HTML-Parser empfehlen Sie?
  2. Wie installiere ich es? (Seien Sie sanft, ich bin völlig neu in Python und erinnere mich daran, ich bin unter Windows)
  3. Haben Sie ein einfaches Beispiel, wie Sie die empfohlene Bibliothek verwenden, um HTML von einer bestimmten URL abzufangen und den Wert aus sagen so etwas wie dieses:

    < div class = "foo" > <Tabelle> <tr> <td> foo </td > </tr > </table > < a class = "link" href = "/ blahblah '> Link </a > </div >

(sagen wir zurückkehren wollen "/ blahblah")

Antwort

5

Web-Scraping in Python 3 wird derzeit sehr schlecht unterstützt; alle anständigen Bibliotheken mit Python nur funktionieren 2. Wenn Sie Web schaben in Python müssen, Python verwenden 2.

Obwohl Beautiful Soup oft empfohlen (jede Frage in Bezug auf Web mit Python in Stack-Überlauf Schaben schlägt es), dann ist es nicht so gut für Python 3 wie für Python 2; Ich konnte es nicht einmal installieren, da der Installationscode immer noch Python 2 war.

Wie für angemessene und einfach zu installierende Lösungen für Python 3, können Sie versuchen, , obwohl ganz Barebones, kommt es mit Python 3.

+1

Irgendeine Idee, wie man den eingebauten HTML-Parser benutzt, um den Inhalt der Tags zu bekommen? – Teifion

+1

Beautiful Soup hat einen guten Bericht über seinen aktuellen Status. http://www.crummy.com/software/BeautifulSoup/3.1-problems.html – dyork

6

Wenn Ihr HTML gut formatiert ist, haben Sie viele Optionen, z. B. sax und dom. Wenn es nicht wohlgeformt ist, benötigen Sie einen fehlertoleranten Parser wie den HTML-Parser Beautiful soup, element tidy oder lxml. Kein Parser ist perfekt, wenn er mit einer Vielzahl von gebrochenem HTML dargestellt wird, muss ich manchmal mehr als einen ausprobieren. Lxml und Elementree Verwenden Sie eine meist kompatible API, die eher Standard als Beautiful soup ist.

Meiner Meinung nach ist lxml das beste Modul für die Arbeit mit XML-Dokumenten, aber die ElementTree im Lieferumfang von Python ist immer noch ziemlich gut. In der Vergangenheit habe ich Beautiful soup verwendet, um HTML in xml zu konvertieren und ElementTree für die Verarbeitung der Daten zu konstruieren.

Verwandte Themen