Я использую crawlspider для перехода по ссылкам, только если страница содержит несколько ключевых слов. В целом это работает, но производительность оставляет желать лучшего. Основные части кода:
класс CrawlSpider_PlainVanilla (CrawlSpider):
name = "my_crawlspider"
rules = (Rule(link_extractor=None,callback='parse_link', follow=True, process_request='filter_response'),)
и
def filter_response(self, request, response):
my_body = response.xpath(self.my_str).re(self.my_reg)
if my_body != []:
return request
, где self.my_str - селектор xpath (исключая такие элементы, как meta или script) и self.my_reg - это регулярное выражение. Остальная часть кода является стандартной. Странно то, что я реализовал то же самое со стандартным scrapy.Spider и здесь производительность довольно хорошая. Буду признателен за любую подсказку, касающуюся недостатков моего кода.
С наилучшими пожеланиями
Герд