我曾经偶尔刮电子商务网页,以获得产品价格信息。我已经有一段时间没有使用使用 Scrapy 构建的刮擦器,昨天尝试使用它-我遇到了bot保护问题。
它使用CloudFlare的DDOS保护,基本上是使用JavaScript评估来过滤掉浏览器(因此scraper),并禁用JS。一旦函数被评估,响应与计算数字被生成。作为回报,服务发送回两个认证cookie,附加到每个请求允许正常爬网的网站。Here的工作原理的描述。
我还发现了一个cloudflare-scrape Python模块,它使用外部JS求值引擎来计算数字并将请求发送回服务器。但我不知道如何将其集成到Scrapy中。或者有一个更聪明的方法不使用JS执行?最终,它是一个表单...
我很感激你的帮助。
3条答案
按热度按时间elcex8rz1#
因此,我在cloudflare-scrape的帮助下使用Python执行JavaScript。
在你的scraper中,你需要添加下面的代码:
还有解析函数。就是这样!
当然,你需要先安装cloudflare-scrap,然后导入到你的spider中。你还需要安装一个JS执行引擎。我已经有了Node.JS,没有抱怨。
3b6akqbq2#
显然,最好的办法是将您的IP列入CloudFlare的白名单;如果这不合适,我推荐cloudflare-scrape库。你可以用它来获取cookie标记,然后在你的Scrapy request中提供这个cookie标记给服务器。
yc0p9oo03#
如果您收到503错误,您可以遵循以下准则:
1.转到
settings.py
1.搜寻:
USER_AGENT
个1.在这里你会看到默认的bot用户代理由scrappy提供。用以下代码替换默认设置: