python - 为什么 Scrapy Udemy 给出响应 403 错误?

标签 python scrapy

我试图使用 scrapy shell 来查看页面的response.css 结果。我使用的简单代码片段是response.css("title::text").extract()。通常,这应该为您提供网页的标题。但我知道这对 Udemy 来说是不可能的。另一方面,我将它用于亚马逊,并且运行良好。有意见吗?

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()
[]

最佳答案

Udemy 试图阻止您使用自动抓取。它返回一个 HTTP 403 响应,并且在该响应的正文中有一些文本说明:

Access to this page has been denied because we believe you are using automation tools to browse the website.

当 HTTP header User-Agent 的值不是他们想要访问其内容的值时,他们就会阻塞。幸运的是, header 可以被欺骗。

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

应该可以工作(不过,我这台机器上没有 python/scrapy,所以我没有测试)

编辑:我不确定规避机器人保护的合法性...在使用此建议之前,请务必检查本地法律。

关于python - 为什么 Scrapy Udemy 给出响应 403 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59792998/

相关文章:

python - PySerial 非阻塞读取循环

python - 如何为蜘蛛设置管道

python - Scrapy 中每个项目的多个页面

javascript - Scrapy获取javascript的空白页

java - 如何在图像中创建透明形状

python - 我应该使用 aevalsrc 还是 anullsrc?我被 "cur_dts is invalid st:0"或 "Delay between the first packet"淹没,编码在第 127 帧停止

python - numpy 数组访问

scrapy - 如何添加剧作家的等待时间

css - 在使用 python 抓取网站时,需要从超过 2 个结果的类中仅提取一个值

python - 如何根据第一列(python)中的日期将 csv 文件拆分为相应的 csv 文件?