如何从 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蓝屏错误0x00000018怎么处理_驱动初始化错误解决  Windows10系统怎么查看显卡型号_Win10 dxdiag显示选项卡  Windows 11怎么更改锁屏超时时间_Windows 11电源选项中设置屏幕关闭时间  Win11开机Logo怎么换_Win11自定义启动画面工具【高级】  Mac上的iMovie如何剪辑视频?(新手入门教程)  Win11怎么设置桌面图标间距_Windows11注册表IconSpacing修改  Python文件管理规范_工程实践说明【指导】  mac怎么查看wifi密码_MAC查看已连接WiFi密码方法【技巧】  如何优化Golang内存分配与GC调度_Golang垃圾回收优化示例  Win11怎么设置触控板手势_Windows11三指四指操作自定义  Win11怎么关闭系统提示音_Windows11声音方案设为无声教程  php转mp4怎么保留字幕_php处理带字幕视频转换说明【说明】  Mac如何与安卓手机传文件_Mac和Android设备互通【必备工具】  如何使用Golang实现云原生应用弹性伸缩_自动应对流量变化  Win11怎么开启上帝模式_创建Windows 11 God Mode全能文件夹【技巧】  TestNG的testng.xml配置文件怎么写  Win11怎么设置系统还原_Windows11系统属性保护设置  Windows的便笺功能如何使用?(桌面备忘技巧)  Win11怎么设置应用分屏_Windows11贴靠布局Snap Layouts  php文件怎么变mp4保存_php输出视频流保存为mp4操作【操作】  Golang如何遍历目录文件_Golang filepath.Walk目录遍历操作方法  Windows10如何更改系统字体大小_Win10辅助功能文本缩放设置  如何诊断并终止卡死的 multiprocessing 子进程  如何在 Go 结构体中正确初始化 map 字段  c++中如何使用auto关键字_c++11类型推导用法说明  c++如何判断文件是否存在_c++ filesystem库用法  如何在 Go 中正确反序列化多个同级 XML 元素(而非单个根节点)  php怎么下载安装后设置默认字符集_utf8配置步骤【详解】  Win11开始菜单打不开_修复Windows 11点击开始图标无响应【教程】  C++如何使用std::transform批量处理容器元素?(代码示例)  PythonWeb前后端整合项目教程_FastAPIReact完整实例  Win10怎样卸载自带Edge_Win10卸载Edge浏览器步骤【教程】  如何理解Go指针和内存分配关系_Go Pointer内存Model解析  Mac版Final Cut Pro入门_Mac视频剪辑基础操作【教程】  Windows10系统怎么查看CPU核心数_Win10逻辑处理器数量查看  Windows如何拦截腾讯视频广告_Windows拦截腾讯视频广告方法【方法】  Win10系统怎么查看网络连接状态_Windows10网络和共享中心  如何使用Golang处理网络超时错误_Golang请求超时异常处理方法  Win11怎么快速锁屏_Win11一键锁屏快捷键Win+L【基础】  如何在Golang中修改数组元素_通过指针实现原地更新  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  Win11怎么关闭系统推荐内容_Windows11开始菜单布局设置  Win11如何设置开机问候语 Win11修改登录界面提示【技巧】  Windows怎样关闭锁屏广告_Windows关闭锁屏广告方法【教程】  PHP 中 require() 语句返回值的用法详解  Python网页解析流程_html结构说明【指导】  Win11怎么设置开机自动连接宽带_Windows11创建拨号连接计划任务  Win11怎样安装网易云音乐_Win11安装网易云教程【步骤】  如何高效识别并拦截拼接式恶意域名 spam  php怎么下载安装后设置错误日志_phpini log配置教程【汇总】 

 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.