2017-02-10 248 views
0

我試圖颳去gelbeseiten.de數據(在德國黃頁)Scrapy只返回第一個結果

# -*- coding: utf-8 -*- 
import scrapy 
    from scrapy.spiders import CrawlSpider 
    from scrapy.http import Request 
    from scrapy.selector import Selector 
    from scrapy.http import HtmlResponse 


class GelbeseitenSpider(scrapy.Spider): 
    name = "gelbeseiten" 
    allowed_domains = ["http://www.gelbeseiten.de"] 
    start_urls = ['http://www.gelbeseiten.de/zoohandlungen/s1/alphabetisch'] 

    def parse(self, response): 
    for adress in response.css('article'): 
     #Strasse 
     strasse = adress.xpath('//span[@itemprop="streetAddress"]//text()').extract_first() 

     #Name 
     name = adress.xpath('//span[@itemprop="name"]//text()').extract_first() 

     #PLZ 
     plz = adress.xpath('//span[@itemprop="postalCode"]//text()').extract_first() 

     #Stadt 
     stadt = adress.xpath('//span[@itemprop="addressLocality"]//text()').extract_first() 

     yield { 
     'name': name, 
     'strasse': strasse, 
     'plz': plz, 
     'stadt': stadt, 
     } 

至於結果我得到了15套具有總是相同的地址,但我認爲它應該是15個不同的地址。

我很感激任何幫助。

回答

0

使用絕對XPath表達式:

adress.xpath('//span[@itemprop="streetAddress"]//text()')

,而應相對使用address(以表達注前導點):

adress.xpath('.//span[@itemprop="streetAddress"]//text()')