数组/循环行为

时间:2014-04-10 14:12:28

标签: xpath scrapy

我有三个商店的数据集(Winkel1-3),我想提取地址。我构建的内容提取名称,然后是地址,而不是两者的组合。我确定我已经构建了一个有缺陷的循环,但我无法弄清楚要改变什么。

我的数据集:

<ul id="itemsList">
    <li class="citem ">
        <a alt="Winkel 1" href="/Zuid-Holland/Delft/Winkel1">Winkel1</a>
        Buitenwatersloot 51,2613TB
    </li>
    <li class="citem ">
        <a alt="Winkel 2" href="/Zuid-Holland/Delft/Winkel2">Winkel 2</a>
        Laan van Van der Gaag 75,2627BX
    </li>
    <li class="citem ">
        <a alt="Winkel 3" href="/Zuid-Holland/Delft/Winkel3">Winkel 3</a>
        Achterom 89,2611PM
    </li>
</ul>

我的刮刀:

class DmozSpider(Spider):
name = "dmoz"
    allowed_domains = ["mydomain.nl"]
    start_urls = [
        "http://www.mydomaintestdata.nl/Zuid-Holland/Delft"
    ]

    def parse(self, response):
        sel = Selector(response)
        sites = sel.xpath('//ul[@id="itemsList"]/li')
        loop = sel.xpath('/html')
        for site in loop:
            adres = sites.xpath('.//a/text()').extract(), 
                    sites.xpath('text()').extract()
        print adres

返回两个数组:

[Winkel1, Winkel2, Winkel3],['Buitenwatersloot 51,2613TB','Laan van Van der Gaag 75,2627BX','Achterom 89,2611PM'] 

我想要的是什么:

[Winkel1,'Buitenwatersloot 51,2613TB'],[Winkel2, 'Laan van Van der Gaag 75,2627BX'],[Winkel3, 'Achterom 89,2611PM']

1 个答案:

答案 0 :(得分:1)

迭代li个元素并获取链接并测试循环中的每个li:

sites = sel.xpath('//ul[@id="itemsList"]/li')
for site in sites:
    print site.xpath('./a/text()').extract(), site.xpath('text()').extract()