如何从 input.txt 文件读取参数并动态传入 Python 请求


本文介绍如何将 json 格式的参数从 input.txt 文件中安全、规范地加载为 python 字典,并用于 requests.get() 请求,替代硬编码参数,提升代码可维护性与灵活性。

在实际开发中,将请求参数(如搜索关键词、国家代码、接口动作等)硬编码在脚本中不仅难以维护,还容易引发安全与配置管理问题。更优实践是将参数外置为结构化配置文件——推荐使用标准 JSON 格式,因其可读性强、语言通用、解析安全且内置支持完善。

✅ 正确的 input.txt 格式(JSON)

请将 input.txt 改写为合法 JSON 格式(注意:JSON 要求双引号、末尾无逗号、键名必须加引号):

{
  "term": "ditech process solutions",
  "country": "IN",
  "action": "get_search_companies"
}
⚠️ 注意:原始示例中 term=ditech process solutions,country=IN,action=get_search_companies 是类 URL 查询字符串格式,不是 JSON,无法直接用 json.load() 解析。若坚持使用该格式,需自定义解析逻辑(见下文“备选方案”),但强烈不推荐——易出错、难扩展、无类型校验。

✅ 推荐实现:用 json.load() 安全加载参数

import json
import requests
from bs4 import BeautifulSoup

# 1. 从 JSON 文件加载参数
input_file_path = "input.txt"
with open(input_file_path, "r", encoding="utf-8") as f:
    params = json.load(f)  # 自动解析为 dict,类型安全

# 2. 构造请求
api_url = "https://lei-registrations.in/wp/wp-admin/admin-ajax.php"
headers = {
    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0"
}

response = requests.get(api_url, params=params, headers=headers)
response.raise_for_status()  # 抛出网络/HTTP错误
data = response.json()

# 3. 解析响应(仅当 success 为 True 时处理)
if data.get("success"):
    soup = BeautifulSoup(data["data"], "html.parser")
    for r in soup.select(".searchResults_title"):
        name = r.select_one(".searchResults_name")
        number = r.select_one(".searchResults_number")
        if name and number:  # 防止 None 引发 AttributeError
            print(f"{name.text.strip():<50} {number.text.strip()}")
else:
    print("API request failed:", data.get("message", "Unknown error"))

? 备选方案:兼容旧格式(不推荐)

若因历史原因必须保留 key=value,key2=value2 的纯文本格式,请使用以下健壮解析函数(自动处理空格、逗号分隔、值内空格等):

def parse_kv_line(line: str) -> dict:
    """解析形如 'term=ditech process solutions,country=IN' 的行"""
    params = {}
    pairs = [p.strip() for p in line.split(",") if p.strip()]
    for pair in pairs:
        if "=" in pair:
            k, v = pair.split("=", 1)  # 只分割第一个 =,支持值含等号
            params[k.strip()] = v.strip().strip('"\'')  # 去除可能的引号
    return params

# 使用方式:
with open("input.txt", "r", encoding="utf-8") as f:
    line = f.readline().strip()
    params = parse_kv_line(line)

✅ 最佳实践总结

  • 始终使用 JSON 格式作为配置文件:语义清晰、工具链成熟、IDE 可校验、天然支持嵌套与数组;
  • 指定 encoding="utf-8":避免中文或特殊字符乱码;
  • 添加 response.raise_for_status():及时捕获 HTTP 错误(如 404、500);
  • 校验 data.get("success") 和 DOM 元素存在性:防止 KeyError 或 AttributeError;
  • ❌ 避免 eval() 或 ast.literal_eval() 解析非 JSON 文本——存在安全与可维护性风险。

通过以上改造,你的脚本即可实现配置与逻辑分离,便于多环境部署(如 dev/staging/prod 各用不同 input.txt),也为后续接入配置中心(如 Consul、Etcd)打下基础。

立即学习“Python免费学习笔记(深入)”;


# php  # linux  # python  # html  # js  # json  # ajax  # 编码  # ubuntu  # 工具  # ai  # 配置文件 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: windows 10专注助手怎么关闭_windows 10禁用通知提醒功能方法  Mac如何修改Hosts文件?(本地开发与屏蔽网站)  php8.4如何配置ssl证书_php8.4https访问配置指南【教程】  Win11屏幕亮度突然变暗怎么解决_自动变暗问题处理  如何使用Golang实现函数指针_函数变量与回调示例  Win11 C盘满了怎么清理 Win11磁盘清理和存储感知使用教程【新手必看】  c++中如何使用auto关键字_c++11类型推导用法说明  如何使用Golang包导出规则_控制函数和变量可见性  Win11怎么关闭任务栏小组件_Windows11隐藏任务栏天气图标  mac怎么退出id_MAC退出iCloud账号与Apple ID切换【指南】  php转exe用什么工具打包快_高效打包软件推荐【汇总】  如何用::实现工具类方法调用_php静态工具类设计技巧【技巧】  如何在Golang中处理通道发送接收错误_防止阻塞或panic  Win11怎么关闭防火墙通知_屏蔽Win11安全中心安全警告弹窗【技巧】  网站体验不好=浪费钱:如何提升-用户体验效果差  Win11怎么设置桌面图标间距_Windows11注册表IconSpacing修改  如何使用Golang实现文件追加操作_向已有文件追加数据  Win11怎么打开旧版计算器_Win11恢复传统计算器应用【详解】  Drupal 中 HTML 链接被重复转义导致渲染异常的解决方案  Win11怎么设置开机密码_Windows11账户登录选项PIN码  如何使用Golang sync.Map实现并发安全map_避免锁竞争  php订单日志怎么记录物流_php记录订单物流变更日志指南【指南】  Linux怎么查找死循环进程_Linux系统负载分析与进程彻底结束【教程】  Win11怎么查看wifi信号强度_检测Windows 11无线网络质量方法【详解】  Win11怎么设置虚拟键盘_打开Win11屏幕键盘操作指南【技巧】  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  php嵌入式日志记录怎么实现_php将硬件数据写入本地日志文件【指南】  零基础学会Python自动化办公_高效处理Excel与PDF文档  Python路径拼接规范_跨平台处理说明【指导】  Windows 11无法安全删除U盘提示设备正在使用中怎么办_Windows 11找出占用设备进程  如何在Golang中处理JSON字段缺失_Golangjson解析字段校验方法  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  Windows10如何删除Windows.old_Win10磁盘清理系统文件选项  VSC里PHP变量未定义报错怎么解决_错误抑制技巧【解答】  MySQL 中使用 IF 和 CASE 实现查询字段条件化显示  如何用列表一次性对 DataFrame 的指定列应用字典映射  如何在 Windows 11 中使用 AlomWare 工具箱  Win11怎么设置系统还原_Windows11系统属性保护设置  如何诊断并终止卡死的 multiprocessing 子进程  Win11如何关闭游戏模式 Win11禁用Xbox Game Bar录制【优化】  Win11怎么更改管理员名字 Win11修改账户名称详细步骤【教程】  如何在Golang中使用container/heap实现堆_Golang container/heap最小堆方法  Windows10无法识别USB设备描述符请求失败_通用串行总线控制器修复  Win11怎么关闭粘滞键_彻底禁用Windows 11连按Shift粘滞键【步骤】  Windows7如何安装系统镜像_Windows7系统安装教程【步骤】  Win11如何更改用户账户文件夹名称 Win11修改C:Users用户名【终极教程】  c++中如何使用虚函数实现多态_c++多态性实现原理  php打包exe如何加密代码_防反编译保护方法【技巧】  Win11文件扩展名怎么显示_Win11查看文件后缀名设置【基础】 

 2026-01-03

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.