如何在python的scrapy选择器中仅提取文本
问题内容:
我有这个代码
site = hxs.select("//h1[@class='state']")
log.msg(str(site[0].extract()),level=log.ERROR)
输出是
[scrapy] ERROR: <h1 class="state"><strong>
1</strong>
<span> job containing <strong>php</strong> in <strong>region</strong> paying <strong>$30-40k per year</strong></span>
</h1>
是否可以只获取没有任何html标记的文本
问题答案:
//h1[@class='state']
在上面的xpath中,你正在选择h1
具有class
属性的标签state
所以这就是为什么它选择所有进入的东西 h1 element
如果你只想选择h1
标签文本,则只需
//h1[@class='state']/text()
如果要选择h1
标签的文本及其子标签,则必须使用
//h1[@class='state']//text()
因此区别在于/text()
特定标签的文本,特定标签的文本//text()
及其子标签
下面提到的代码为你工作
site = ''.join(hxs.select("//h1[@class='state']/text()").extract()).strip()