Я не могу найти никакого решения для использования start_requests с правилами, также я не видел ни одного примера в Интернете с этими двумя. Моя цель проста, я хочу переопределить функцию start_request, чтобы получить возможность перехватывать все исключения из запросов и использовать мета в запросах. Это код моего паука:
класс TestSpider (CrawlSpider):
имя = «тест»
allow_domains = ['www.oreilly.com']
start_urls = ['https://www.oreilly.com/library/view/practical-postgresql/9781449309770/ch04s05.html']
# Base on scrapy doc
def start_requests(self):
for u in self.start_urls:
yield Request(u, callback=self.parse_item, errback=self.errback_httpbin, dont_filter=True)
rules = (
Rule(LinkExtractor(), callback='parse_item', follow=True),
)
def parse_item(self, response):
item = {}
item['title'] = response.xpath('//head/title/text()').extract()
item['url'] = response.url
yield item
def errback_httpbin(self, failure):
self.logger.error('ERRRRROR - {}'.format(failure))
Этот код очищает только одну страницу. Я пытаюсь изменить его и вместо:
def parse_item(self, response):
item = {}
item['title'] = response.xpath('//head/title/text()').extract()
item['url'] = response.url
yield item
Я пытался использовать это, основываясь на этом ответе
def parse_item(self, response):
item = {}
item['title'] = response.xpath('//head/title/text()').extract()
item['url'] = response.url
return self.parse(response)
Кажется, это работает, но ничего не трогает, даже если я добавлю функцию разбора на моего паука. Кто-нибудь знает, как использовать start_request и правила вместе? Буду рад любой информации по этой теме. Приятного кодирования!