Я пишу сканер для веб-сайта, используя scrapy с CrawlSpider.
Scrapy предоставляет встроенный фильтр дубликатов запросов, который фильтрует повторяющиеся запросы на основе URL-адресов. Кроме того, я могу отфильтровать запросы, используя член правил CrawlSpider.
Что я хочу сделать, это отфильтровать запросы, например:
http:://www.abc.com/p/xyz.html?id=1234&refer=5678
Если я уже посетил
http:://www.abc.com/p/xyz.html?id=1234&refer=4567
ПРИМЕЧАНИЕ: ссылка - это параметр, который не влияет на полученный ответ, поэтому мне все равно, изменяется ли значение этого параметра.
Теперь, если у меня есть набор, который накапливает все идентификаторы, я мог бы игнорировать его в моей функции callback parse_item (что моя функция обратного вызова) для достижения этой функциональности.
Но это означало бы, что я по крайней мере получаю эту страницу, когда мне это не нужно.
Итак, каков способ, которым я могу рассказать, что он не должен отправлять конкретный запрос на основе URL?