xpath, чтобы извлечь весь текст в определенном узле и вернуть его как один элемент, используя scrapy - PullRequest
0 голосов
/ 22 января 2019

Итак, у меня есть этот html:

<html>
<p>
   This is my first sentence
   <br>
   This sentance should be considered as part of the first one.
   <br>
   And this also
</p>
<p>
   This is the second sentence
</p>
</html>

Я хочу извлечь текст из узлов p, весь текст в одном узле должен быть возвращен как один элемент, я использую оболочку scrapy, как это:

scrapy shell path/to/file.html
response.xpath('//p/text()').extract()

вывод, который я получаю:

[
'This is my first sentence',
'This sentance should be considered as part of the first one.'
'And this also'
'This is the second sentence'
]

вывод, который я хочу:

[
 'This is my first sentence This sentance should be considered as part of the first one And this also'
 'This is the second sentence'
]

Любая помощь о том, как решить эту проблему с помощью выражения xpath

Большое спасибо:))))

Ответы [ 2 ]

0 голосов
/ 23 января 2019

В качестве альтернативы, вы могли бы избежать w3lib, используя ' '.join(), как предлагается в комментариях:

paragraphs = response.css('p')
paragraphs = [' '.join(p.xpath('./text()').getall()) for p in paragraphs]
0 голосов
/ 23 января 2019

Это решило проблему ...

from w3lib.html import remove_tags
two_texts = response.xpath('//p').extract()
two_texts = [remove_tags(text) for text in two_texts]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...