我正在学习在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>']
答案 0 :(得分:1)
Xpath非常灵活,您应该了解它们的更多信息,以下代码将为您提供结果。
response.xpath('//span[starts-with(@class,"Animal-")]/@title').getall()
干杯!
您还可以测试上面的XPath here,并试着学习更多,我使用的上述方法适用于所有标签属性,例如,使用//a/@href
<来从所有标签中提取href / p>