Общий подход для извлечения текста из любого формата HTML с использованием scrapy xpath - PullRequest
0 голосов
/ 27 июня 2018

Я хочу извлечь текст из HTML-страницы с узлом <article>, но внутри этого узла нет стандартного формата узлов. Я могу извлечь полный текст в <article>, однако мой вывод не совпадает с отображением на странице HTML. Например, ниже приведен HTML-код для извлечения -

 <article>
        <div> This is first Paragraph </div>
        <div> This is second Paragraph 
            <div> This is third paragraph &nbsp
                <span> 3rd para continue </span> 
            </div> 
        </div>
 </article>

Вот что у меня в коде.

xxx = response.xpath("//article/div | //article/ul | //article/ol | //article/p")
content = ""
for eachLine in warningLetterlines:     
    tmp = eachLine.xpath('.//text()').extract()
content += "".join( i.replace(u'\xa0', u'') for i in tmp ) + "\n"

Этот код выводится как -

This is first paragraph
This is second paragraphThis is third paragraph3rd para continue

Тем не менее, я хочу -

This is first paragraph
This is second paragraph 
This is third paragraph 3rd para continue

Я попытался добавить некоторую пользовательскую логику для присоединения к списку с помощью \ n или "" на основе внутреннего узла, но, как я уже упоминал, моя страница HTML не имеет общего формата, поэтому мой код прерывается всякий раз, когда он видит что-то новое. Я также подумал о том, чтобы получить список имен узлов и присоединить его на основе имени узла (например, добавить «\ n» для <div> / <p> и «» для <span> / <b> и т. Д.), Но длина этих двух списков не одинакова. Ниже приведены некоторые страницы, которые я пытаюсь удалить - (Обратите внимание, что все 3 имеют разную HTML-разметку с узлом <article>.

https://www.fda.gov/ICECI/EnforcementActions/WarningLetters/2017/ucm572086.htm https://www.fda.gov/ICECI/EnforcementActions/WarningLetters/2016/ucm503559.htm https://www.fda.gov/ICECI/EnforcementActions/WarningLetters/2013/ucm376390.htm

Я хочу вырезать эти страницы в том же текстовом формате, который отображается на странице. Я нашел онлайн конвертер html в текст, который дает мне желаемый результат, но я не уверен, как реализовать это самостоятельно. Любой подход / помощь, пожалуйста? Я действительно застрял в этой проблеме.

Это онлайн-конвертер, если вы хотите посмотреть -

https://templates.mailchimp.com/resources/html-to-text/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...