Я использую Scrapy для извлечения текста новостей из новостных сайтов. Я предполагаю, что весь текст в тегах <p>
является фактической статьей. (Который не обязательно является безопасным предположение, но это то, что я работаю с) Для того, чтобы найти все <p>
тегов, Scrapy позволяет мне использовать CSS селекторы, например, так:Извлечь весь текст из произвольно вложенного HTML
response.css("p::text")
Проблема заключается в том, что некоторые новости сайты, как поставить много разметки в своих статьях, например, так:
<p>
Senator <a href="/people/senator_whats_their_name">What's-their-name</a> is <em>furious</em> about politics!
</p>
есть ли селектор CSS, или в противном случае некоторые простой способ в Scrapy, чтобы извлечь текст и зачистите все форматирование, так что это приводит к что-то вроде этого?
Senator What's-their-name is furious about politics!
Проблема заключается в том, что эти теги, в теории, может быть произвольно вложенными:
<p>
<span class="some-annoying-markup"><a href="who cares"><em>Wow this link must be important </em></a></span>
<p>
И я все еще хочу, чтобы извлечь текст
Wow this link must be important
Я понимаю, что это довольно наивный способ извлечь контент с HTML-страницы, но это выходит за рамки этого вопроса. Если есть более простой способ сделать это, я буду принимать предложения, но то, что я нашел на эту тему, кажется, намного сложнее, чем то, что я здесь представил, поэтому я просто заинтересован в решении проблемы. представлены.