无法requests.get()网站,“远程终端关闭的连接,无响应”

lil*_*pig 3 python web-scraping

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

import requests
requests.get('https://www.ldoceonline.com/')
Run Code Online (Sandbox Code Playgroud)

返回异常

requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))
Run Code Online (Sandbox Code Playgroud)

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

关于如何成功刮刮的任何想法吗?

ash*_*h17 8

如果您检查请求模块的代码,您将找到发出请求时使用的默认标头的值。上面提到的User-Agent头也在那里。

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

所以实际的解决方案是使用自定义 User-Agent 标头。此处提供适用于不同浏览器的 User-Agent 字符串。

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()
Run Code Online (Sandbox Code Playgroud)


SIM*_*SIM 6

尝试使用标题以获得有效的响应。

import requests

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

输出:

200
Run Code Online (Sandbox Code Playgroud)