Иногда вы получаете 403, потому что robots.txt запрещает роботов на всем веб-сайте или на части сайта, которую вы удаляете.
Затем, прежде всего, напишите в settings.py ROBOTSTXT_OBEY = False
.Я не вижу его в ваших настройках здесь.
Не считайте robots.txt в целом недостаточно.Вы должны создать свой пользовательский агент как обычный браузер, также в файле settings.py.Например: USER_AGENT='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.36 Safari/535.7'
Лучше всего создать список параметров пользовательского агента в настройках, например, так:
USER_AGENT_LIST = [
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.36 Safari/535.7',
...,
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10'
]
Вы, кажется, сделали это.Затем, чтобы сделать это случайным, и вы, кажется, тоже.
Наконец, это не обязательно, но я позволю вам увидеть, полезно ли это вам, написать DOWNLOAD_DELAY = 3
в settings.py, где значение1 по крайней мере.Идеал - сделать это случайным.Это делает ваш паук, действующий как браузер.Насколько я знаю, слишком быстрая задержка загрузки может заставить сайт понять, что это робот, созданный с помощью поддельного пользовательского агента.Если у веб-мастера большой опыт, он разрабатывает правила с множеством барьеров для защиты своего сайта от роботов.
Сегодня утром я проверил его на ту же проблему, что и у вас, в моей оболочке scrapy.Я надеюсь, что это будет полезно для вас.