Scrapy: парсинг списка ссылок

Этот вопрос является своего рода продолжением этого вопроса, который я задавал ранее.

Я пытаюсь очистить веб-сайт, содержащий ссылки на первой странице. Что-то похожее на this.

Теперь, поскольку я хочу очистить детали элементов, представленных на странице, я извлек их индивидуальные URL-адреса.

Я сохранил эти URL-адреса в списке.

Как запустить пауков, чтобы очистить страницы по отдельности?

Для лучшего понимания:

[urlA, urlB, urlC, urlD...]

Это список URL-адресов, которые я скопировал. Теперь я хочу запустить паука, который будет очищать ссылки по отдельности.

Как мне это сделать?


person praxmon    schedule 16.01.2015    source источник
comment
Я думаю, вам следует перечитать ответ в своем предыдущем вопросе. Вы не создаете список URL-адресов, вы возвращаете список новых объектов Request из start_request для этих URL-адресов.   -  person fnl    schedule 16.01.2015


Ответы (1)


Я предполагаю, что URL-адреса, по которым вы хотите следовать, ведут на страницы с такой же или похожей структурой. В таком случае вам следует сделать что-то вроде этого:

from scrapy.contrib.spiders import CrawlSpider
from scrapy.selector import Selector
from scrapy.http import Request

class YourCrawler(CrawlSpider):

   name = 'yourCrawler'
   allowed_domains = 'domain.com'
   start_urls = ["htttp://www.domain.com/example/url"]


   def parse(self, response):
      #parse any elements you need from the start_urls and, optionally, store them as Items.
      # See http://doc.scrapy.org/en/latest/topics/items.html

      s = Selector(response)
      urls = s.xpath('//div[@id="example"]//a/@href').extract()
      for url in urls:
         yield Request(url, callback=self.parse_following_urls, dont_filter=True)


   def parse_following_urls(self, response):
       #Parsing rules go here

В противном случае, если URL-адреса, по которым вы хотите следовать, ведут на страницы с другой структурой, вы можете определить для них определенные методы (например, parse1, parse2, parse3 ...).

person lolog    schedule 16.01.2015