Почему Scrapy Udemy дает ответ 403 ошибка? - PullRequest
1 голос
/ 17 января 2020

Я пытался использовать scrapy shell, чтобы увидеть ответ. css Результат страницы в основном. простой фрагмент кода, который я использовал, это response. css ("title :: text"). extract (). Обычно это должно дать вам название веб-страницы. Но я понимаю, что для Удеми это невозможно. С другой стороны, я использовал его для Амазонки, и он работает нормально. Любые комментарии?

scrapy shell "https://www.udemy.com/courses/search/?q=python&src=sac&kw=python"
response.css("title::text").extract()
['Access to this page has been denied.']

с другой стороны, это ниже одного работает нормально.

scrapy shell "https://www.amazon.com/s?k=garlic+press&crid=2DY5U90PELGKN&sprefix=garlic+pres%2Caps%2C286&ref=nb_sb_ss_i_1_11"

response.css("title::text").extract()
['Amazon.com: garlic press']

РЕДАКТИРОВАТЬ:

scrapy shell --set=USER_AGENT='Mozilla/5.0' "https://www.udemy.com/courses/search/?q=python&src=sac&kw=python"
response.css("h4::text").extract()
[]

1 Ответ

1 голос
/ 17 января 2020

Udemy пытается помешать вам использовать автоматическую очистку. Он возвращает ответ HTTP 403, и в теле этого ответа есть текст с текстом:

Доступ к этой странице запрещен, поскольку мы считаем, что вы используете инструменты автоматизации для просмотра веб-сайта.

Они блокируются, когда значение HTTP-заголовка User-Agent не является тем, что они хотят получить доступ к своему контенту. К счастью, заголовки могут быть подделаны.

scrapy shell --set=USER_AGENT='Mozilla/5.0' "https://www.udemy.com/courses/search/?q=python&src=sac&kw=python"

Должен работать (хотя у меня нет python / scrapy на этой машине, поэтому я не тестировал)

edit: я не уверен в законности обойти защиту своих ботов ... Обязательно проверьте ваш местный l aws, прежде чем использовать этот совет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...