Xpath.Получить текст указанных тегов в порядке появления на странице - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь получить текст из тегов h2, h3 и p на странице в том порядке, в котором они отображаются на странице html.Пример: весь выделенный текст должен быть извлечен в этом порядке.enter image description here

При использовании следующего xpath:

response.xpath('//*[name()=("h2", "h3","p")]/text()').extract()

Я получаю следующую ошибку:

ValueError: XPath error: Invalid expression in //*[name()=("h2", "h3","p")]/text()

Где я ошибаюсь?Есть ли другой способ достичь моей цели?

1 Ответ

0 голосов
/ 20 октября 2018

Вы можете достичь желаемого, комбинируя несколько условных выражений, используя or:

response.xpath('//*[name()="h2" or name()="h3" or name()="p"]/text()')

Вы также можете выбрать то же самое, комбинируя несколько путей и объединяя несколько вызовов .xpath():

response.xpath('//h2|//h3|//p').xpath('./text()')

Я не уверен, есть ли какие-либо различия в производительности, но я бы просто выбрал тот, который вам удобнее для чтения.
Если производительность представляет большую проблему, я рекомендую профилировать в обоих направлениях.

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