使用urllib的urlopen请求网页时出现RemoteDisconnected错误如何解决
问题原因
你遇到的RemoteDisconnected报错是剑桥词典网站的反爬虫策略触发导致的:urllib默认发送的请求头中User-Agent字段值为Python-urllib/xx.x(xx.x为你的Python版本号),服务器识别到这是非浏览器的爬虫请求后,会直接主动断开连接,不会返回任何响应内容。
解决方案
方案1:使用原生urllib自定义请求头
通过构造Request对象手动添加浏览器的User-Agent字段,伪装成普通浏览器访问:
from urllib.request import urlopen, Request url = 'https://dictionary.cambridge.org/dictionary/english/water' # 可替换为自己浏览器的真实User-Agent,通过浏览器开发者工具网络面板即可查看 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } req = Request(url, headers=headers) page = urlopen(req) # 读取页面内容示例 html_content = page.read().decode('utf-8')
方案2:使用requests库(更简洁推荐)
requests库对HTTP请求的封装更易用,是爬虫场景的常用选择:
- 先安装依赖:
pip install requests
- 编写请求代码:
import requests url = 'https://dictionary.cambridge.org/dictionary/english/water' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } response = requests.get(url, headers=headers) response.encoding = 'utf-8' html_content = response.text
注意事项
- 请控制请求频率,避免短时间内大量请求占用网站服务器资源
- 剑桥词典的内容受版权保护,请勿批量爬取用于商业用途
内容的提问来源于stack exchange,提问作者mike
相关产品推荐
相关产品推荐

