当前位置: 首页 > news >正文

浏览器能正常访问URL获取JSON,但是pycharm里调不通

首次调通:可运行代码块:(能拿到结果但是有些小的报错)

import requests
import time
import json
from urllib3.exceptions import InsecureRequestWarning# 禁用SSL证书验证警告(可选,仅测试用)
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)# 目标URL(确保原始URL不带t参数)
url = "https://airtw.moenv.gov.tw/json/AQI/Taiwan_2025110607.json"
timestamp = int(time.time() * 1000)
url_with_ts = f"{url}?t={timestamp}"  # 正确添加时间戳参数# 代理配置(替换为你的实际代理)
proxies = {"http": "http://127.0.0.1:7890","https": "http://127.0.0.1:7890"
}# 完整请求头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36","Accept": "application/json, text/javascript, */*; q=0.01","Referer": "https://airtw.moenv.gov.tw/","X-Requested-With": "XMLHttpRequest"
}try:print("访问URL:", url_with_ts)response = requests.get(url_with_ts,headers=headers,proxies=proxies,timeout=20,verify=False  # 临时关闭SSL验证(生产环境不建议))print(f"状态码: {response.status_code}")print(f"响应内容类型: {response.headers.get('Content-Type', '未知')}")print(f"原始响应(前500字符): {response.text[:500]}")# 解析JSON(返回的是列表,直接赋值给data)data = response.json()# 直接用len(data)获取列表长度(因为data是列表)print("✓ 连接成功!JSON解析成功,数据条数:", len(data))except json.JSONDecodeError as e:print(f"\n✗ JSON解析失败: {e}")
except requests.exceptions.ProxyError:print("\n✗ 代理错误:请检查代理地址和端口")
except ConnectionResetError:  # 捕获内置的连接重置异常print("\n✗ 连接被服务器强制关闭:建议更换代理节点")
except requests.exceptions.ConnectionError:  # 捕获其他连接错误print("\n✗ 网络连接错误:请检查是否正常")
except Exception as e:print(f"\n✗ 其他错误: {str(e)}")

报错信息:

E:\project\hunan_couse_about\OpenData-master\OpenData-master\.venv\Scripts\python.exe E:\project\hunan_couse_about\OpenData-master\OpenData-master\test6.py 访问URL: https://airtw.moenv.gov.tw/json/AQI/Taiwan_2025110607.json?t=1762396363336?t=1762412374692 E:\project\hunan_couse_about\OpenData-master\OpenData-master\.venv\Lib\site-packages\urllib3\connectionpool.py:1097: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings warnings.warn( Traceback (most recent call last): File "E:\project\hunan_couse_about\OpenData-master\OpenData-master\test6.py", line 44, in <module> print("✓ 连接成功!JSON解析成功,数据条数:", len(data.get("sites", []))) ^^^^^^^^ AttributeError: 'list' object has no attribute 'get' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "E:\project\hunan_couse_about\OpenData-master\OpenData-master\test6.py", line 51, in <module> except requests.exceptions.ConnectionResetError: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: module 'requests.exceptions' has no attribute 'ConnectionResetError'. Did you mean: 'ConnectionError'? 状态码: 200 响应内容类型: application/json 原始响应(前500字符): [

一、核心错误 1:'list' object has no attribute 'get'

原因:

服务器返回的 JSON 顶层结构是列表(list),但代码中错误地用了字典(dict)的get方法(data.get("sites", []))。列表没有get方法,因此报错。

解决:

len(data.get("sites", []))改为直接获取列表长度len(data)

二、核心错误 2:module 'requests.exceptions' has no attribute 'ConnectionResetError'

原因:

ConnectionResetErrorPython 内置的异常(属于OSError的子类),而非requests.exceptions模块中的异常。代码错误地将其写为requests.exceptions.ConnectionResetError,导致找不到该异常类。

解决:

直接捕获内置的ConnectionResetError,或捕获更通用的requests.exceptions.ConnectionError(包含所有连接相关错误)。

三、次要问题:URL 参数错误(双重t参数)

原因:

代码生成的 URL 是https://...?t=1762396363336?t=1762412374692,其中出现了两个?t=,这是错误的。URL 中多个参数应使用&连接,且时间戳参数只需一个(用于避免缓存)。

解决:

确保只添加一次时间戳参数

# 原错误代码(可能重复添加了t参数)
url = "https://airtw.moenv.gov.tw/json/AQI/Taiwan_2025110607.json?t=1762396363336"# 修正后(确保原始URL不带t参数,只添加一次)
url = "https://airtw.moenv.gov.tw/json/AQI/Taiwan_2025110607.json"

最后版本:可运行代码块:(报错的点修复之后)

import requests
import time
import json
from urllib3.exceptions import InsecureRequestWarning# 禁用SSL证书验证警告(可选,仅测试用)
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)# 目标URL(确保原始URL不带t参数)
url = "https://airtw.moenv.gov.tw/json/AQI/Taiwan_2025110607.json"
timestamp = int(time.time() * 1000)
url_with_ts = f"{url}?t={timestamp}"  # 正确添加时间戳参数# 代理配置(替换为你的实际代理)
proxies = {"http": "http://127.0.0.1:7890","https": "http://127.0.0.1:7890"
}# 完整请求头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36","Accept": "application/json, text/javascript, */*; q=0.01","Referer": "https://airtw.moenv.gov.tw/","X-Requested-With": "XMLHttpRequest"
}try:print("访问URL:", url_with_ts)response = requests.get(url_with_ts,headers=headers,proxies=proxies,timeout=20,verify=False  # 临时关闭SSL验证(生产环境不建议))print(f"状态码: {response.status_code}")print(f"响应内容类型: {response.headers.get('Content-Type', '未知')}")print(f"原始响应(前500字符): {response.text[:500]}")# 解析JSON(返回的是列表,直接赋值给data)data = response.json()# 直接用len(data)获取列表长度(因为data是列表)print("✓ 连接成功!JSON解析成功,数据条数:", len(data))except json.JSONDecodeError as e:print(f"\n✗ JSON解析失败: {e}")
except requests.exceptions.ProxyError:print("\n✗ 代理错误:请检查代理地址和端口")
except ConnectionResetError:  # 捕获内置的连接重置异常print("\n✗ 连接被服务器强制关闭:建议更换代理节点")
except requests.exceptions.ConnectionError:  # 捕获其他连接错误print("\n✗ 网络连接错误:请检查代理是否正常")
except Exception as e:print(f"\n✗ 其他错误: {str(e)}")

http://www.dtcms.com/a/576824.html

相关文章:

  • AI代码开发宝库系列:PDF文档解析MinerU
  • 校园招聘seo行业网
  • 开发网站的技术路线博达高校网站群建设教程
  • 物联网运维中基于联邦学习的跨设备隐私保护与协同优化技术
  • 物联网AI模组:连接与智能的融合
  • 【底层机制】ART虚拟机深度解析:Android运行时的架构革命
  • 嵌入式硬件:如何理解高频电子线路,从入门开始
  • 物联网赋能校园共享站:打造24小时一站式服务新体验!
  • 萤石开放平台申请物联网卡指南
  • 矩阵在密码学的应用——希尔密码详解
  • 20251106给荣品RD-RK3588-MID开发板跑Rockchip的原厂Android13系统时适配AP6275P模块的WIFI【使用荣品的DTS】
  • 学校网站代码模板成都的网站建设开发公司哪家好
  • 怎么制作自己的小网站低代码前端开发平台
  • Elastic Stack 或 ELK —— 日志管理与数据分析方案
  • 手机、平板、电脑如何投屏画面到电视?ToDesk远程控制TV版教程分享
  • UEC++UNiagaraFunctionLibrary源代码
  • 小杰-大模型(twelve)——大模型部署与应用——gradipo-实现UI界面
  • Python基础入门
  • 【React Native】粘性布局StickyScrollView
  • 无人机RTMP推流平台EasyDSS:构建新一代智能交通视频监控系统
  • 从大数据角度看时序数据库选型:Apache IoTDB的实战经验分享
  • Apache Drill 连接 MySQL 或 PostgreSQL 数据库
  • React Native App 图表绘制完整实现指南
  • 做招商加盟网站怎么样济南网站优化的周期
  • 怡梦姗网站做么动漫与游戏制作专业就业方向
  • js原生、vue导出、react导出、axios ( post请求方式)跨平台导出下载四种方式的demo
  • Springboot + vue 宿舍管理系统
  • 【Python3教程】Python3高级篇之pip标准包管理工具
  • 段权限检查(Segement Privilege Check)
  • JD京东线下HR面(准备)