Я создал паук, который должен сканировать несколько веб-сайтов, и мне нужно определить разные правила для каждого URL-адреса в списке start_url.Scrapy: динамически генерировать правила для каждого start_url
start_urls = [
"http://URL1.com/foo"
"http://URL2.com/bar"
]
rules = [
Rule (LinkExtractor(restrict_xpaths=("//" + xpathString+"/a")), callback="parse_object", follow=True)
]
Единственное, что необходимо изменить в правиле, это строка xpath для ограничения_трассы. Я уже придумал функцию, которая может получить xpath, который я хочу динамически с любого веб-сайта. Я подумал, что могу просто получить текущий URL-адрес, который спайдер будет очищать, и передать его через функцию, а затем передать полученный xpath правилу.
К сожалению, я искал, и кажется, что это невозможно, поскольку scrapy использует планировщик и с самого начала компилирует все start_urls и правила. Есть ли какое-либо решение для достижения того, что я пытаюсь сделать?
Спасибо, но я хочу, чтобы паук следил за ссылками. В частности, только те ссылки, которые имеют отношение к тем данным, которые мне нужны. Вот почему я явно определил параметр restrict_xpaths. –