无法request.get()一个网站,“远程端关闭连接没有响应”

问题描述 投票:1回答:2

当我尝试向本网站发送请求时:

import requests
requests.get('https://www.ldoceonline.com/')

返回异常

requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))

奇怪的是,如果您通过常规方法(通过浏览器)访问网站,它们功能齐全且响应非常好。只有当您尝试通过网络抓取技术检索信息时才会遇到此响应。

有关如何成功刮取它的任何想法?

python web-scraping
2个回答
6
投票

尝试使用标头来获得有效的响应。

import requests

res = requests.get('https://www.ldoceonline.com/',headers={"User-Agent":"Mozilla/5.0"})
print(res.status_code)

输出:

200

3
投票

如果你检查请求模块的code,你会发现在发出请求时使用的default headers的值。上面提到的User-Agent标题也在那里。

如果User-Agent标头设置为“python-requests / 2.21.0”,似乎一堆webresources(无论是有意还是无意)都不能正确处理请求。

所以实际的解决方案是使用自定义User-Agent标头。 here提供了不同浏览器的用户代理字符串。

import requests

url = 'https://www.ldoceonline.com/'
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"}

r = requests.get(url,headers=headers)
r.raise_for_status()
© www.soinside.com 2019 - 2024. All rights reserved.