我使用Python requests get方法查询MediaWiki API,但收到响应需要花费大量时间。相同的请求通过Web浏览器非常快速地收到响应。我有同样的问题请求google.com。以下是我在Windows 10上的Python 3.5中尝试的示例代码:
response = requests.get("https://www.google.com")
response = requests.get("https://en.wikipedia.org/wiki/Main_Page")
response = requests.get("http://en.wikipedia.org/w/api.php?", params={'action':'query', 'format':'json', 'titles':'Labor_mobility'})
但是,我不会在检索其他网站时遇到此问题:
response = requests.get("http://www.stackoverflow.com")
response = requests.get("https://www.python.org/")
答案 0 :(得分:3)
这听起来与服务器的基础连接存在问题,因为对其他URL的请求有效。这些是我想到的:
尝试添加无害的标题,例如:requests.get("https://www.example.com", headers={"User-Agent": "Mozilla/5.0 (X11; CrOS x86_64 12871.102.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.141 Safari/537.36"})
等待几分钟,然后重试。如果这解决了您的问题,则可以通过添加time.sleep()
来降低代码速度,以防止再次受到速率限制。
通过执行curl --ipv6 -v https://www.example.com
进行验证。然后,与curl --ipv4 -v https://www.example.com
比较。如果后者明显更快,则可能是您的IPv6连接有问题。检查here以获得可能的解决方案。
如果那不能解决您的问题,我还收集了其他一些可能的解决方案here。