如果您只访问该页面一次并获得429
可能不是你打他们太多了。你不能确定429
错误是准确的,这只是他们的网络服务器返回的内容。我见过页面返回 404 响应代码,但页面正常,而合法缺失页面上返回 200 响应代码,只是服务器配置错误。他们可能会回来429
从任何机器人,尝试改变你的User-Agent
到 Firefox、Chrome 或“Robot Web Scraper 9000”,看看您会得到什么。像这样:
requests.get(baseurl, headers = {'User-agent': 'Super Bot Power Level Over 9000'})
声明自己是机器人或
requests.get(baseurl, headers = {'User-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'})
如果您想更多地模仿浏览器。请注意所有模仿浏览器的版本内容,在撰写本文时这些内容都是最新的。您可能需要更高版本号。只需找到您使用的浏览器的用户代理,此页面会告诉您那是什么:
https://www.whatismybrowser.com/detect/what-is-my-user-agent
如果您只是说自己是机器人,某些网站会返回更好的可搜索代码,而其他网站则相反。这基本上就是狂野的西部,必须尝试不同的事情。
另一个专业提示,您可能需要编写代码才能拥有“cookie jar”或接受 cookie 的方法。通常这只是您请求中的额外一行,但我会将其留给另一个 stackoverflow 问题:)
如果你确实经常打电话,那么你需要在通话之间睡觉。这是完全由他们控制的服务器端响应。您还需要研究您的代码如何与robots.txt
,该文件通常位于网络服务器的根目录中,其中包含它希望您的蜘蛛遵循的规则。
您可以在这里阅读相关内容:在Python中解析Robots.txt
抓取网络既有趣又具有挑战性,请记住,您可能随时被任何网站以任何原因阻止,您是他们的客人。所以好好走路:)