为什么我从不同的位置获得不同的http响应?

时间:2019-03-24 21:19:15

标签: python amazon-web-services amazon-ec2 web-scraping python-requests

我正在执行一项任务,需要在Web上输入scrap boxofficemojo网站。

我对所有代码进行了编码,并且在我的本地计算机上运行良好。

我需要抓取大约19000个网址。因为这显然是一个耗时的过程,所以我不想在本地计算机上运行它。相反,我想在aws ec2实例上运行它。

ec2实例是Ubuntu 18.04。我已经验证了python版本,并且脚本中使用的库是否存在以及所有内容。

但是,如果我尝试

requests.get('http://www.boxofficemojo.com')

它给了我503的回复。如果我打印响应文本,则表示我们正在更新站点中。,但同样的事情也正在我的本地计算机上运行。

为什么在ec2实例中出现这种奇怪的行为。

我尝试通过发出 ping 命令来测试ec2实例内部的Internet连接。一切正常。

1 个答案:

答案 0 :(得分:3)

有一些公共站点和公共api专门阻止来自ec2实例(可能还有其他云提供商)的调用。

您要抓取的某些站点并非不可能,只是将ec2实例的IP范围列入黑名单,以减少正在消耗其资源的“机器人”……我已经遇到过几次,几次网站。

NBA stats api是我熟悉的一个例子,但我也遇到过其他人-您要抓取的站点也可能是其中一些。