2014-02-10 1 views
0

Итак, у меня есть страница с URL-адресами, которые я хотел бы сканировать. Как новичок только после учебника, его довольно сложно увидеть, как развернуть start_urls, чтобы захватить все ссылки на этой странице. Я предполагаю, что есть какой-то способ, но он не может расшифровать документацию очень хорошо. В настоящий момент он просто посещает эту верхнюю страницу, понимает, что нет, действительно, это не одна из дочерних страниц и вызывает какое-то исключение.Как я могу получить scrapy, чтобы принять страницу с URL-адресами в качестве стартового URL-адреса и просто обходить их?

class NewSpider(Spider): 
    name = 'the_new_spider' 
    allowed_domains = ['newspider.com'] 
    start_urls = ['http://newspider.com/page_full_of_urls'] #how to get it to extract links from this page first and crawl them? 

    def parse(self, response): 
     sel = Selector(response) 
     t = sel.xpath("//title") 
     item = NewItem() 
     item['title'] = t 
     return item 

ответ

3

Читать docs:

В функции обратного вызова разбора ответа (веб-страницы) и вернуть либо Элемента объекты, объекты запроса или итератора обоих. Те Запросы также будут содержать обратный вызов (может быть, тот же самый), и затем будет загружаться Scrapy, а затем их ответ обрабатывается указанным обратным вызовом .

Что-то, как это должно работать:

class NewSpider(Spider): 
    name = 'the_new_spider' 
    allowed_domains = ['newspider.com'] 
    start_urls = ['http://newspider.com/page_full_of_urls'] 

    def parse(self, response): 
     sel = Selector(response) 
     for url in sel.xpath("//.../@href").extract(): 
      yield Request(url, callback=self.parse_2) 

    def parse_2(self, response): 
     sel = Selector(response) 
     t = sel.xpath("//title") 
     item = NewItem() 
     item['title'] = t 
     return item 
+0

Спасибо, это работает, описание только казалось очень загадочным в документации. – LittleBobbyTables

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