You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.6.3(Anaconda/Spyder)运行爬虫代码无打印输出求助

排查Spyder中Python爬虫无输出无报错的问题

这种运行后没反应、既不报错也不输出的情况,大概率是请求被拦截、页面结构变化,或者输出没正常显示导致的,我给你拆解几个常见原因和解决办法:

1. 网站反爬机制拦截了你的请求

直接用urllib.request.urlopen发送请求时,默认没有携带浏览器标识(User-Agent),很容易被网站的反爬系统识别为爬虫,返回空页面或空白内容,但不会抛出异常,自然就没东西可解析输出。

解决办法:添加请求头模拟浏览器访问
修改请求部分的代码,用Request对象带上常见的浏览器请求头:

from urllib.request import Request, urlopen as uReq

my_url = 'https://www.newegg.com/Power-Banks/SubCategory/ID-3724?cm_sp=Cat_Batteries-Power-Banks-Chargers_1-_-VisNav-_-Power-Banks'
# 模拟Chrome浏览器的请求头
req = Request(my_url, 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'})
uClient = uReq(req)
page_html = uClient.read()
uClient.close()

2. 目标网站的页面结构已经更新

你代码里依赖的item-container类可能已经被网站修改了,导致containers = page_soup.findAll("div",{"class":"item-container"})返回空列表,循环根本没执行,所以没输出。

解决办法:检查当前页面的真实结构

  1. 打开目标网站,按F12调出开发者工具;
  2. 用“选择元素”工具点击一个产品卡片,查看它的外层容器的class名称(比如现在可能是item-cell或其他新名称);
  3. 修改代码中findAll的参数,匹配新的class。

另外,建议在代码里加一行调试输出,确认是否拿到了容器:

containers = page_soup.findAll("div",{"class":"item-container"})
print(f"找到 {len(containers)} 个产品容器")  # 如果输出0,就说明元素没匹配到

3. Spyder的输出窗口存在显示问题

有时候Spyder的Console会出现输出缓存或延迟的情况,导致你看不到正常输出。

解决办法:

  • 在代码最后加一行print("爬虫执行完毕!"),测试基础输出是否正常;
  • 切换到Spyder的IPython Console运行代码,或者重启Spyder再试;
  • 检查Console的输出设置(默认是开启的,但偶尔会出现异常)。

4. 网络连接超时或失败

如果你的网络不稳定,或者网站访问缓慢,urlopen可能会卡住,一直处于等待响应的状态,看起来就像“无反应”。

解决办法:添加超时时间
在请求时加上超时参数,比如10秒,超过时间没响应就会抛出异常,帮你快速定位问题:

uClient = uReq(req, timeout=10)  # 超时10秒触发报错

你可以先从添加请求头和调试输出这两步开始排查,应该能很快找到问题所在。

内容的提问来源于stack exchange,提问作者hallkevi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:00:59