如何使用scrapy提取特定示例中的所有元素

时间:2016-05-05 10:48:28

标签: python xpath web-scraping scrapy

我想提取this page上的所有元素,但它只提取第一个元素。 xpath表达式应该如何?

 def parse(self, response):
    for sel in response.xpath("//*[@id='liste']"):        
        lianjia = lianjiaItem()
        lianjia['name_of_community'] = sel.xpath("div[1]/div[1]/h2/a/text()").extract()
        lianjia['Antragsteller'] = sel.xpath("div[1]/div[2]/div[1]/span[2]/text()").extract()

        yield lianjia

1 个答案:

答案 0 :(得分:0)

那是因为只有一个元素id等于'liste'。您需要迭代遍历代表单个数据行的元素,并从每一行中提取所有需要的信息,例如:

for sel in response.xpath("//*[@id='liste']/div[contains(@class,'eintrag')]"):        
    lianjia = lianjiaItem()
    lianjia['name_of_community'] = sel.xpath("div[@class='results']/h2/a/text()").extract()
    lianjia['Antragsteller'] = sel.xpath(".//div[span='Sprecher']/span[2]/text()").extract()

    yield lianjia