我有一个以下代码,并希望将字典设为{“100”:“ABC”}和{“200”:“DEF”}
<ul class="net">
<li id="100">
<a>ABC</a>
</li>
<li id="200">
<a>DEF</a>
</li>
</ul>
我尝试使用下面的代码,但我不知道如何在xpath属性中传递变量。
list_of_id = response.css('ul.net>li::attr(id)').extract()
for i in list_of_id:
j = dict()
j[i] = response.xpath('//ul/li[@id="i"]/a/text()').extract()
请帮忙。
答案 0 :(得分:1)
改变这个:
j[i] = response.xpath('//ul/li[@id="i"]/a/text()').extract()
到此:
j[i] = response.xpath("//ul/li[@id="+i+"]/a/text()").extract()
答案 1 :(得分:0)
您可以使用选择器来达到目的。试一试:
html='''
<ul class="net">
<li id="100">
<a>ABC</a>
</li>
<li id="200">
<a>DEF</a>
</li>
</ul>
'''
from lxml.html import fromstring
tree = fromstring(html)
for item in tree.cssselect(".net li"):
num = item.attrib['id']
name = item.cssselect("a")[0].text
item={num:name}
print(item)
结果:
{'100': 'ABC'}
{'200': 'DEF'}