Scrapy没有使用extract_first()获得干净的文本

时间:2019-02-08 17:10:10

标签: python xpath scrapy

我正在尝试从网站上的许多span标签中抓取一些文本,但没有得到清晰的文本,我们将不胜感激!

以下是网址:

https://www.example.com

这就是我正在尝试的

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

预期输出:

Level 18, 25 Bligh Street, SYDNEY, NSW 2000

3 个答案:

答案 0 :(得分:2)

您需要获取给定xpath中所有内容的xpath text()。 例如:

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

这将返回多个span元素,因此您必须使用extract()。 然后,您可以根据需要加入并清理它,例如:

''.join(result).replace('\xa0', ' ')

答案 1 :(得分:2)

您可以通过提取div字符串表示形式来获取所需的文本:

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

答案 2 :(得分:1)

此任务有一个有用的库(来自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)

出[4]:“新南威尔士州2000年,悉尼,布莱街25号18楼”