Ich benutze Scrapy, um den Text von Nachrichtenartikeln von Nachrichtenseiten zu extrahieren. Ich gehe davon aus, dass der gesamte Text innerhalb von <p>
Tags der eigentliche Artikel ist. (Was nicht unbedingt eine sichere Annahme, aber es ist was mit ich arbeite), um alle der <p>
Tags zu finden, Scrapy lässt mich CSS-Selektoren verwenden, etwa so:Extrahieren Sie den gesamten Text aus beliebig verschachteltem HTML
response.css("p::text")
Das Problem ist, dass einige Nachrichten Websites wie viel Markup in ihren Artikeln setzen, etwa so:
<p>
Senator <a href="/people/senator_whats_their_name">What's-their-name</a> is <em>furious</em> about politics!
</p>
gibt es einen CSS-Selektor oder auf andere Weise einige einfache Weise innerhalb Scrapy, den Text und die Streifen alle Formatierungen zu extrahieren, so dass die Ergebnisse in ist etwas wie das?
Senator What's-their-name is furious about politics!
Das Problem ist, dass diese Tags können theoretisch, verschachtelt werden willkürlich:
<p>
<span class="some-annoying-markup"><a href="who cares"><em>Wow this link must be important </em></a></span>
<p>
Und ich möchte noch den Text
Wow this link must be important
Ich verstehe, extrahieren, dass dies eine ist ziemlich naive Möglichkeit, Inhalte aus einer HTML-Seite zu extrahieren, aber das ist außerhalb des Umfangs dieser Frage. Wenn es einen einfacheren Weg gibt, dies zu erreichen, werde ich Vorschläge machen, aber was ich zu diesem Thema gefunden habe, scheint viel komplizierter zu sein als das, was ich hier vorgestellt habe, also bin ich nur daran interessiert, das Problem zu lösen. ve präsentiert.