Scrapy не получает чистый текст с помощью extract_first () - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь очистить некоторый текст с веб-сайта под многими тегами span, но не получаю чистый текст, любая помощь будет принята!

Вот URL:

https://www.example.com

Это то, что я пытаюсь

response.xpath('//div[@class="agency-header__address"]').extract_first()

ожидаемый результат:

Level 18, 25 Bligh Street, SYDNEY, NSW 2000

Ответы [ 3 ]

0 голосов
/ 08 февраля 2019

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

response.xpath('string(//div[@class="agency-header__address"])').extract_first()
0 голосов
/ 10 февраля 2019

Есть одна полезная библиотека для этой задачи (от создателей Scrapy), вы должны попробовать: https://github.com/TeamHG-Memex/html-text

import html_text
i_need_text=response.xpath('//div[@class="agency-header__address"]').extract_first()
html_text.extract_text(i_need_text)

Out [4]: ​​'Уровень 18, 25 Bligh Street, СИДНЕЙ,NSW 2000 '

0 голосов
/ 08 февраля 2019

Вам нужно взять xpath text() для всего, что находится внутри вашего данного xpath.Например:

result = response.xpath('//div[@class="agency-header__address"]//text()').extract()

Это будет возвращать несколько span элементов, поэтому вы должны использовать extract().Затем вы можете присоединиться и очистить его так, как вы хотите, например:

''.join(result).replace('\xa0', ' ')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...