如何从@class xpath响应中选择跨度中的特定元素

时间:2019-09-10 16:38:34

标签: xpath scrapy

我正在学习在scrapy中使用xpath,但是我尝试抓取的html相当复杂。

我尝试用html,css和xpath选择一些东西,但是我已经做到了:

out_bad = pd.DataFrame({1: ['A'], 2: ['BC'], 3: ['']}) print(out_bad) # 1 2 3 # 0 A BC

返回:

response.xpath('//span[starts-with(@class,"Animal-")]').getall()

我使用了一个单独的脚本只是返回title元素的内容来使我前进,但是我知道这是一个hacky解决方案。 我如何只返回以下内容:

[u'<span class="Animal-1" title="Dogs" legs="4" tail="true"></span>', u'<span class="Animal-7" title="Birds" beak="true"></span>', u'<span class="Animal-24" title="Elephants"></span>']

1 个答案:

答案 0 :(得分:1)

Xpath非常灵活,您应该了解它们的更多信息,以下代码将为您提供结果。

response.xpath('//span[starts-with(@class,"Animal-")]/@title').getall()

干杯!

您还可以测试上面的XPath here,并试着学习更多,我使用的上述方法适用于所有标签属性,例如,使用//a/@href <来从所有标签中提取href / p>