Python如何检测URL请求是否返回JSON并在URL列表标记YES
问题根因
你当前使用的webbrowser模块仅能调用本地默认浏览器打开目标URL,不会捕获、返回URL对应的响应内容,因此无法判断返回是否为JSON格式。
实现方案
我们可以使用requests库发送HTTP请求、获取响应内容,再通过JSON解析校验判断返回格式,具体步骤如下:
- 先安装依赖库
pip install requests
- 完整实现代码
import requests # 如果你需要生成带标记列的表格可以引入pandas,不需要可以去掉 import pandas as pd def is_return_json(url): try: # 配置请求头避免被常见反爬拦截,设置超时避免请求卡住 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"} resp = requests.get(url, headers=headers, timeout=10) # 先校验请求是否成功(状态码为200类) resp.raise_for_status() # 尝试解析响应内容为JSON,解析成功则返回YES resp.json() return "YES" except: return "NO" # 替换为你要检测的URL列表 url_list = [ "https://mvneves.com.br/wp-json/wc/v3", # 可在此处添加更多待检测URL ] # 生成带标记的结果 result = [] for url in url_list: result.append({ "URL": url, "是否返回JSON": is_return_json(url) }) # 如果需要导出为带列的CSV文件,可执行以下代码 # df = pd.DataFrame(result) # df.to_csv("URL检测结果.csv", index=False, encoding="utf-8-sig") # 直接打印结果预览 for item in result: print(item)
注意事项
- 该逻辑直接校验响应内容是否可解析为JSON,比单纯判断
Content-Type响应头的准确性更高,可覆盖部分站点响应头配置错误的场景 - 如果目标站点有反爬限制,可以调整
headers参数增加Cookie、Referer等请求头信息 - 可以根据你的需求调整超时时间,避免个别无响应URL卡住整个脚本
- 如果你不需要导出表格,直接拿
is_return_json函数的返回值做标记即可
内容的提问来源于stack exchange,提问作者Douglas Soares
相关产品推荐
相关产品推荐

