Windows环境下爬取URL数据存CSV失败,Ubuntu及部分Windows可正常运行
解决Windows环境下爬虫代码无法运行的问题
我有一段Python爬虫代码,用来从指定URL爬取数据并保存为CSV文件。这段代码在Ubuntu系统和部分Windows机器上都能正常运行,但在我的Windows机器上就是无法工作。以下是我的代码片段:
from bs4 import BeautifulSoup import requests import csv import time import random url = 'some url' print(url) headers = { 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1', 'User-Agent': random.choice(user_agent_list), 'Accept': 'text/html,application/xhtml+xml,applicati...' }
结合Windows环境的特殊性,咱们一步步排查可能的问题:
1. 先补全未定义的user_agent_list
你代码里用了random.choice(user_agent_list)但没定义这个列表——这大概率是第一个坑!其他机器可能全局环境里有这个列表,但你的Windows机器没有。直接补上:
# 放在headers定义前 user_agent_list = [ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Edge/118.0.2088.61', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0' ]
2. 排查Windows网络/代理问题
Windows默认可能走系统代理,或者你的网络(比如公司内网、家庭防火墙)拦截了爬虫请求:
- 先测试浏览器能不能打开目标URL,如果浏览器也打不开,那就是网络本身的问题;
- 代码里强制关闭代理试试:
# 发起请求时加上这行 response = requests.get(url, headers=headers, proxies={"http": None, "https": None})
- 如果遇到SSL验证错误(测试用,生产环境不推荐),可以临时关闭验证:
response = requests.get(url, headers=headers, verify=False)
3. 处理Windows文件路径与编码问题
如果后续有保存CSV的逻辑,Windows的路径和编码容易踩坑:
- 用
os.path处理路径,避免转义错误:
import os csv_path = os.path.join(os.getcwd(), '爬取数据.csv') with open(csv_path, 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) # 写入数据逻辑
- 一定要指定
encoding='utf-8',不然Windows默认的GBK编码容易导致中文乱码或写入失败。
4. 统一依赖库版本
可能你的Windows机器上requests、beautifulsoup4版本和其他机器不一致,直接更新到最新版:
打开命令提示符/PowerShell执行:
pip install --upgrade requests beautifulsoup4
关键提醒:看报错信息!
运行代码时,把控制台弹出的具体错误(比如NameError、ConnectionError、PermissionError)记下来——这是最快定位问题的关键!比如如果是权限错误,可能是你保存CSV的路径需要管理员权限,换个桌面路径试试就行。
内容的提问来源于stack exchange,提问作者Barry Bonds
相关产品推荐
相关产品推荐

