调用json()解析Web文本文件触发JSONDecodeError,求解决方案
解决JSONDecodeError并提取目标文件中的IP地址
错误原因
你触发JSONDecodeError的核心问题是:目标URL返回的是纯文本格式的黑名单数据,根本不是JSON格式的数据,强行调用.json()方法去解析纯文本,自然会报错。
修正后的代码
# 从https://isc.sans.edu/block.txt提取文本并提取每行首个IP地址 import requests url = "https://isc.sans.edu/block.txt" # 获取纯文本内容,不要用.json() webtext = requests.get(url).text # 用with语句写入文件,自动处理文件关闭,更安全 with open('webtextfile.txt', 'w', encoding='utf-8') as webtextfile: webtextfile.write(webtext) # 读取文件并提取每行首个IP地址 ip_list = [] with open('webtextfile.txt', 'r', encoding='utf-8') as webtextfile: for line in webtextfile: line = line.strip() # 跳过空行和注释行(以#开头的行) if not line or line.startswith('#'): continue # 按空格分割,取第一个元素就是IP地址 ip = line.split()[0] ip_list.append(ip) # 打印提取到的IP列表 print(ip_list)
关键说明
- 用
.text替代.json():直接获取网页返回的纯文本内容,适合处理txt这类非JSON格式的资源。 - 使用
with语句操作文件:无需手动调用close(),避免资源泄漏。 - 过滤无效行:目标文件里有注释行(#开头)和空行,需要跳过这些行再提取IP。
- 提取IP:每行内容以空格分隔,第一个元素就是需要的IP地址,用
split()[0]即可获取。
内容的提问来源于stack exchange,提问作者timmytucan
相关产品推荐
相关产品推荐

