Scrapy Shell и Scrapyrt получил 403, но Scrap Crawl работает - PullRequest
0 голосов
/ 06 сентября 2018

Я очищаю веб-сайт, который требует referer.

Я установил это так.

DEFAULT_REQUEST_HEADERS = {
  'Referer': 'http://www.referer.com'
}

Когда я пытался scrapy shell url в папке проекта (у него scrapy.cfg), что означает, что он использует те же настройки в файле settings.py, я вижу, что referer находится в запросе, но я получил 403 ответ.

[scrapy.core.engine] ОТЛАДКА: Сканировано (403) https://my_url.com (реферер: http://www.referer.com)

Однако, не меняя ничего, scrapy crawl my_spider не имеет проблем.

[scrapy.downloadermiddlewares.redirect] ОТЛАДКА: Перенаправление (302) на https://redirected_my_url.com> с https://my_url.com>

Я тоже scrapyrt, у которого та же проблема, что и scrapy shell.

1 Ответ

0 голосов
/ 08 ноября 2018

Проверьте robots.txt вашего сайта. Иногда его не существует. Если robots.txt позволяет роботам, то вряд ли проблема в этом. Иначе, вы пишете ROBOTSTXT_OBEY = False в settings.py или в команде scrapy crawl or shell -s ROBOTSTXT_OBEY = False. Как пожелаешь.

О пользовательском агенте. Насколько мне известно, для пользовательского агента в оболочке scrapy достаточно одного, для паука-обходчика лучше создать список групп пользовательских агентов и сделать его случайным.

Если этого недостаточно. Наконец, используйте DOWNLOAD_DELAY = 3 со значением по крайней мере 1 в вашем файле settings.py или команде. Чтобы ваш паук, в обход или оболочку, действовал больше как обычный браузер. Вы также можете использовать AUTOTHROTTLE_ENABLED = True, по той же причине:

AUTOTHROTTLE_ENABLED = True
# The initial download delay
AUTOTHROTTLE_START_DELAY = 1
# The maximum download delay to be set in case of high latencies
AUTOTHROTTLE_MAX_DELAY = 60
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...