制作Python字典的难度(xpath / CSS选择器)

时间:2017-09-14 11:40:12

标签: css python-2.7 xpath scrapy-spider

我有一个以下代码,并希望将字典设为{“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()

请帮忙。

2 个答案:

答案 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'}