我必须使用Scrapy抓取数据:
<div class="data"
data-name="{"id":"566565", "name":"data1"}"
data-property="{"length":"444", "height":"678"}"
>
data1
</div>
<div class="data"
data-name="{"id":"566566", "name":"data2"}"
data-property="{"length":"555", "height":"777"}"
>
data2
</div>
我需要data-name
和data-property
属性。我的选择器是:
selections = Selector(response).xpath('//div[@class="data"]/attribute::data-property').extract()
如何在选择中包含data-name
属性?
答案 0 :(得分:1)
以下XPath应返回data-property
和data-name
属性:
//div[@class='data']/attribute::*[name()='data-property' or name()='data-name']
XPath演示:http://www.xpathtester.com/xpath/e720602b62461f3600989be73eb15aec
如果您需要为每个父div
以特定格式将两个属性作为一对返回,则无法使用纯XPath 1.0完成此操作。可能需要一些python,可能使用list comprehension(未测试):
selections = [div.xpath('concat(@data-property, " ", @data-name)').extract() \
for div in Selector(response).xpath('//div[@class="data"]')]