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

如何从文本文件存储的URL批量获取JSON数据 解决curl格式报错问题

问题根因

这个报错通常由以下3个原因导致:

  • 存储URL的TXT文件是Windows下编辑的,自带\r换行符,被读入变量后导致URL格式非法
  • 调用curl时变量没有加双引号,URL如果包含特殊字符会被shell拆分为多个参数
  • URL行首尾存在多余的空格、制表符等不可见空白字符

修复步骤

1. 清理URL文件的特殊字符

执行以下命令处理test001.txt,移除Windows换行符和行首尾空白:

# 通用方案,无需额外安装工具
sed -i 's/\r$//;s/^[[:space:]]*//;s/[[:space:]]*$//' test001.txt

# 已安装dos2unix的用户也可以用下面的命令先转换换行符
# dos2unix test001.txt

2. 修改shell脚本规避语法问题

调整后的脚本如下,兼容更多边缘场景:

#!/usr/bin/bash

while IFS= read -r line || [[ -n $line ]]; do
    curl -H "User-agent: 'your bot 0.1'" "$line" | jq 
done < test001.txt

修改点说明:

  • 读取行时指定IFS=,避免read自动丢弃行首尾的合法字符
  • 给变量$line包裹双引号,避免shell对URL做分词处理
  • 增加|| [[ -n $line ]]判断,避免文件最后一行无换行符时被漏处理

可选优化

如果需要把每个URL的解析结果存储为单独的文件,避免输出混在一起,可以将curl行修改为:

curl -H "User-agent: 'your bot 0.1'" "$line" | jq > "$(md5sum <<< "$line" | awk '{print $1}').json"

用URL的MD5值作为文件名,避免URL包含特殊字符导致文件名非法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 19:15:03