2014-02-12 4 views
0

При создании паука натолкнулась на интересную вещь - вам нужно передать ссылку на ее функцию, в свою очередь, отправленную в Селекторе. Пробовал уже все доступные методы ответа и запроса Scrapy, но данные не поступают.Scrapy. Отправьте ссылку в Selector

Кусок кода, чтобы понять:

start_urls = [ 
     "http://www.site.ru/" 
    ] 

    def parse(self, response): 
     sel = Selector(response) 
     self.links = sel.xpath('//*[@id="col-01"]/div/div/ul/li/a/@href').extract() 

    def parse_catalog(self, response): 
     sel = Selector(response) 
     elements = sel.xpath('//*[@id="col-01"]/div[1]/ul[1]/ 
             li[4]/div[2]/strong/text()').extract()[0] 
     links_auto = sel.xpath('//div[@class="car-detail-list"]/a/@href').extract() 

     for link in links_auto: 
      self.parse_page(link) 

    def parse_page(self, link): 
     response = ??? (link) 
     self.sel = Selector(response) 
+0

Чего вы пытаетесь достичь? – Martol1ni

ответ

0

Вы должны дать новый запрос от метода parse_catalog. Отправьте его с parse_link в качестве обратного вызова, и он будет работать точно так же, как и обычные методы анализа.

start_urls = [ 
    "http://www.site.ru/" 
] 

def parse(self, response): 
    sel = Selector(response) 
    self.links = sel.xpath('//*[@id="col-01"]/div/div/ul/li/a/@href').extract() 

def parse_catalog(self, response): 
    sel = Selector(response) 
    elements = sel.xpath('//*[@id="col-01"]/div[1]/ul[1]/ 
            li[4]/div[2]/strong/text()').extract()[0] 
    links_auto = sel.xpath('//div[@class="car-detail-list"]/a/@href').extract() 

    for link in links_auto: 
     yield Request(url=link, callback=self.parse_page) # Request is sent 

def parse_page(self, response): 
    sel = Selector(response) # Response is picked up 
+0

Спасибо, но я уже знаком. Я хотел использовать некоторые из методов Response-Request для более гибкого определения. – JRazor

+0

'extract()' возвращает массив элементов. Чего вы хотите достичь? – Martol1ni

+0

Получить HTML для обработки селектора – JRazor

Смежные вопросы