所以我试着把https://craft.co/tesla
当我从浏览器访问时,它会正确打开。但是,当我使用Scrapy时,它会获取站点,但当我查看响应时,
view(response)
它显示的是cloudfare站点,而不是实际的站点。
我该怎么办?
所以我试着把https://craft.co/tesla
当我从浏览器访问时,它会正确打开。但是,当我使用Scrapy时,它会获取站点,但当我查看响应时,
view(response)
它显示的是cloudfare站点,而不是实际的站点。
我该怎么办?
2条答案
按热度按时间jobtbby31#
Cloudflare会定期改变他们的技术,无论如何,你只要使用一个简单的Python模块就可以绕过Cloudflare的反机器人页面。如果你想抓取或爬取一个受Cloudflare保护的网站,这个模块会很有用。Cloudflare的反机器人页面目前只检查客户端是否支持Javascript,尽管他们可能会在未来增加额外的技术。
由于Cloudflare不断更改和强化其保护页面,cloudscraper需要JavaScript引擎/解释器来解决Javascript挑战。这使得脚本可以轻松模拟普通的Web浏览器,而无需显式地去模糊和解析Cloudflare的Javascript。
任何使用cloudscraper的脚本在第一次访问任何启用了Cloudflare反机器人的站点时都会休眠约5秒,但在第一次请求后不会发生延迟。
请检查此python模块。
使用cloudscraper最简单的方法是调用create_scraper()。
任何从这个会话对象向受Cloudflare防机器人保护的网站发出的请求都将被自动处理。没有使用Cloudflare的网站将被正常处理。您不需要进一步配置或调用任何东西,您可以有效地处理所有网站,就像它们没有受到任何保护一样。
使用cloudscraper的方式与使用Requests的方式完全相同。cloudScraper的工作方式与Requests Session对象相同,只是调用scraper.get()或requests.post()而不是requests.get()或scraper.post()。
piwo6bdm2#
使用
requests-HTML
.你可以使用下面的代码来避免阻塞: