2017-03-27 7 views
1

Wenn ich einen Punkt platzieren, um meine XPath relativ zu machen, es zurückgeben { „name“: „none“}, wenn ich den Punkt zu entfernen, sie die gleichen Daten wiederholt sich, bis die SchleifeXPath relativen Pfad gibt keine

.//*[@id="listingAds"]/section/section/ul/li[1]/a/section/h2 
endet

ist die komplette Code

import scrapy 
class BrickSetSpider(scrapy.Spider): 
    name = "brickset_spider" 
    start_urls = ['https://www.leboncoin.fr/annonces/offres/bretagne/'] 

    def parse(self, response): 
     SET_SELECTOR = '.dontSwitch .trackable' 
     for annonce in response.css(SET_SELECTOR): 


      NAME_SELECTOR = './/*[@id="listingAds"]/section/section/ul/li[1]/a/section/h2' 
      NAME_CATEGORIE = '.item_title+ .item_supp ::text' 
      NAME_PLACE = '.item_supp+ .item_supp ::text' 
      NAME_PRICE = '.item_price ::text' 

      yield { 
      'name': annonce.xpath(NAME_SELECTOR).extract_first(), 
      } 

Antwort

0

das ist, weil Ihr SET_SELECTOR bereits Sie in die Liste der Inserate wird. Mit anderen Worten, jeder annonce Selektor entspricht jedem Suchergebniselement (jede Auflistung). Passen Sie Ihre NAME_SELECTOR entsprechend an:

NAME_SELECTOR = './/h2/text()'