В целях приложения, над которым я работаю, мне нужно scrap, чтобы прекратить сканирование и начать сканирование с определенного, произвольного URL-адреса.
Предполагаемое поведение для scrap - просто вернуться к определенному URL-адресу, который может быть предоставлен в качестве аргумента, если определенное условие удовлетворено.
Я использую CrawlSpider, но не могу понять, как этого добиться:
class MyCrawlSpider(CrawlSpider):
name = 'mycrawlspider'
initial_url = ""
def __init__(self, initial_url, *args, **kwargs):
self.initial_url = initial_url
domain = "mydomain.com"
self.start_urls = [initial_url]
self.allowed_domains = [domain]
self.rules = (
Rule(LinkExtractor(allow=[r"^http[s]?://(www.)?" + domain + "/.*"]), callback='parse_item', follow=True),
)
super(MyCrawlSpider, self)._compile_rules()
def parse_item(self, response):
if(some_condition is True):
# force scrapy to go back to home page and recrawl
print("Should break out")
else:
print("Just carry on")
Я пытался разместить
return scrapy.Request(self.initial_url, callback=self.parse_item)
в ветке someCondition is True
, но безуспешно. Был бы очень признателен за помощь, пытаясь понять это часами.