Identifizieren großer Textkörper über BeautifulSoup oder andere Python-basierte Extraktoren

8

Gegebene einige zufällige Nachrichten

Der ursprüngliche Plan bestand darin, ein BeautifulSoup findAll(True) zu verwenden und jedes Tag nach seinem .getText() -Wert zu sortieren. BEARBEITEN: Verwenden Sie dies nicht für HTML-Arbeit, verwenden Sie die lxml-Bibliothek, es ist Python-basiert und viel schneller als BeautifulSoup. Befehl (was bedeutet, extrahieren Sie alle HTML-Tags)

Aber das wird nicht funktionieren für die meisten Seiten, wie die, die ich als Beispiel aufgeführt habe, weil der große Textkörper in viele kleinere Tags unterteilt ist, wie zum Beispiel Absatzteiler.

Hat jemand damit Erfahrung? Jede Hilfe bei so etwas wäre toll.

Im Moment benutze ich BeautifulSoup zusammen mit Python, bin aber auch bereit, andere Möglichkeiten zu erkunden.

EDIT: Kam nach einigen Monaten zu dieser Frage zurück (wow, ich hörte mich wie ein Idiot an ^) und löste das mit einer Kombination von Bibliotheken & amp; eigener Code.

Hier sind einige sehr nützliche Python-Bibliotheken für die Aufgabe in sortierter Reihenfolge, wie sehr es mir geholfen hat:

1 gans-Bibliothek Schnell, leistungsstark, konsistent

2 Lesbarkeitsbibliothek Inhalt ist passabel, im Durchschnitt langsamer als Gans, aber schneller als Kesselpipe

3 python-boilerpipe Langsamer & amp; schwer zu installieren, kein Fehler in der Boilerpipe-Bibliothek (ursprünglich in Java), aber zu der Tatsache, dass diese Bibliothek auf einer anderen Bibliothek in Java, die IO-Zeit & amp; Fehler usw.

Ich werde vielleicht Benchmarks veröffentlichen, wenn Interesse besteht.

Indirekt verwandte Bibliotheken sollten Sie wahrscheinlich installieren und ihre Dokumente lesen:

  • NLTK-Textverarbeitungsbibliothek Dies ist zu gut, um nicht zu installieren. Sie stellen Textanalysewerkzeuge zur Verfügung mit HTML-Tools (wie Cleanup, etc).
  • lxml html / xml parser Erwähnt über. Dies schlägt BeautifulSoup in jedem Aspekt außer der Benutzerfreundlichkeit. Es ist ein etwas schwieriger zu lernen, aber die Ergebnisse sind es wert. HTML-Analyse dauert viel weniger Zeit, es ist sehr auffällig.
  • python webscrapper library Ich denke, der Wert dieses Codes ist nicht der lib selbst, aber benutze die lib als Referenzhandbuch, um dein eigenes zu erstellen Crawler / Extraktoren. Es ist sehr schön codiert / dokumentiert!

Ein großer Teil des Wertes und der Leistungsfähigkeit von Python, einer ziemlich langsamen Sprache, kommt von den Open-Source-Bibliotheken. Sie sind besonders toll, wenn sie kombiniert und zusammen verwendet werden, und jeder sollte sie nutzen, um alle Probleme zu lösen, die sie haben könnten!

Die Goose-Bibliothek bekommt eine Menge solide Wartung, sie haben nur arabische Unterstützung hinzugefügt, es ist großartig!

    
Lucas Ou-Yang 04.01.2013, 20:21
quelle

2 Antworten

4

Sie können sich das Paket python-readability ansehen, das genau das für Sie erledigt.

    
Kyle Maxwell 04.01.2013, 22:07
quelle
2

Sie gehen wirklich nicht den richtigen Weg, würde ich sagen, wie alle obigen Kommentare bestätigen würden.

Das heißt, das macht das, wonach Sie suchen.

%Vor%

Es wird nur der Text extrahiert, indem zuerst der Hauptcontainer aller <p> -Tags gefunden und dann nur die <p> -Tags selbst ausgewählt werden, um den Text zu erhalten; Ignorieren die <script> und andere irrelevante.

Wie in den Kommentaren erwähnt, funktioniert das nur für CNN - und möglicherweise nur für diese Seite. Möglicherweise benötigen Sie für jede neue Webseite eine andere Strategie.

    
jdotjdot 04.01.2013 20:46
quelle