我正在开展一项任务,我需要网站剪贴簿boxofficemojo网站。
我编写了一切,它在我的本地机器上工作得非常好。
我需要抓大约19000个网址。由于这显然是一个耗时的过程,我不想在我的本地机器上运行它。相反,我想在aws ec2实例上运行它。
ec2实例是Ubuntu 18.04。我已经验证了python版本,脚本中使用的库是否存在以及所有内容。
但是,如果我试试
requests.get('http://www.boxofficemojo.com')
,
它给了我503回复。如果我打印响应文本,则表示我们正在更新站点。但同样的事情是在我的本地机器上工作。
为什么我在ec2实例中得到这种奇怪的行为。
我尝试通过发出ping命令测试ec2实例中的Internet连接。它工作正常。
有公共站点和公共API专门阻止来自ec2实例(可能还有其他云提供商)的呼叫。
你试图抓住的一些网站并不是不可能的,只是将ec2实例ip范围列入黑名单以减少耗尽资源的“机器人”......我已经多次遇到过几次这样的网站。
NBA统计数据api是我熟悉的一个例子,但我也遇到过其他人 - 你正在抓的网站也可能是其中的一部分。