
本文介绍如何通过模拟表单提交,调用众议院财务披露系统(disclosures-clerk.house.gov)的后端接口,批量获取指定年份的议员财务申报 pdf 下载链接,并支持按申报类型(如 ptr 或 financial)进一步筛选。
本文介绍如何通过模拟表单提交,调用众议院财务披露系统(disclosures-clerk.house.gov)的后端接口,批量获取指定年份的议员财务申报 pdf 下载链接,并支持按申报类型(如 ptr 或 financial)进一步筛选。
美国众议院财务披露公开系统(https://www.php.cn/link/7c5c19a19d6ce2d3a58c749b478ae9a2)虽未提供官方 API,但其搜索功能基于标准 HTTP POST 表单提交,后端返回 HTML 结果页。这使得我们可以通过 Python 轻松实现自动化检索——无需 Selenium 模拟浏览器,仅需 requests + BeautifulSoup 即可高效完成。
以下是一个完整、可运行的示例脚本:
import requests
from bs4 import BeautifulSoup
# 配置搜索参数(支持空值,仅需设置 FilingYear 即可触发全量查询)
search_params = {
"LastName": "", # 可选:按姓氏过滤(如 "Smith")
"FilingYear": "2024", # ✅ 必填:目标申报年份(注意:实际可用年份以网站支持为准)
"State": "", # 可选:州缩写(如 "CA")
"District": "", # 可选:选区编号
}
# 后端搜索接口 URL(非前端页面,直接提交表单数据)
api_url = "https://www.php.cn/link/7c5c19a19d6ce2d3a58c749b478ae9a2/ViewMemberSearchResult"
# 发送 POST 请求获取搜索结果 HTML
response = requests.post(api_url, data=search_params, timeout=30)
response.raise_for_status() # 抛出网络或HTTP错误
# 解析 HTML 并提取所有 PDF 链接
soup = BeautifulSoup(response.content, "html.parser")
pdf_links = []
for link in soup.select('a[href$=".pdf"]'):
href = link["href"].strip()
text = link.get_text(strip=True)
# 过滤并结构化:提取申报类型(如 'ptr-pdfs' 或 'financial-pdfs')
filing_type = "PTR" if "ptr-pdfs" in href else "Financial" if "financial-pdfs" in href else "Other"
pdf_links.append({
"name": text,
"url": "https://disclosures-clerk.house.gov/" + href, # 补全为绝对 URL
"type": filing_type
})
# 打印结果(示例:仅显示前 5 条)
print(f"共找到 {len(pdf_links)} 份 PDF 文件:\n")
for item in pdf_links[:5]:
print(f"[{item['type']}] {item['name']} → {item['url']}")
# ✅ 可选:按类型筛选(例如只下载 Financial 类型)
financial_only = [p for p in pdf_links if p["type"] == "Financial"]
print(f"\n其中 Financial 类型共 {len(financial_only)} 份。")
? 关键说明与注意事项:
SkillSub Pro - Python 题解与代码注释双功能技能功能概述SkillSub Pro - Python 题解与代码注释双功能技能是一项面向实际任务的技能,主要用于SkillSub Pro 是一个 Python 题解生成与代码注释的 双功能合体技能 ,专为学生、算法学习者和开发者设计;✅ 一个技能,两种用途 :;核心要点📝 题解模式 :输入题目/题号,自动生成完整 Python 题解(含详细注释、解题思路、复杂度分析);💬 注释模式 :输入 Python 代码,自动添加详细中。它将相关步骤、
-
URL 构造:原始 HTML 中的 PDF 链接为相对路径(如
public_disc/financial-pdfs/2024/10056789.pdf),务必拼接基础域名https://disclosures-clerk.house.gov/形成有效下载地址; - 年份有效性:并非所有年份都开放查询(如 2024 年数据可能尚未全部上线),建议先手动在网站验证目标年份是否返回结果;
-
反爬提示:该站点无严格反爬机制,但建议添加
headers={'User-Agent': 'Mozilla/5.0...'}和合理延时(如time.sleep(0.5))以降低请求频率,避免被临时限流; -
申报类型识别:URL 路径中包含语义标识——
ptr-pdfs/对应 Periodic Transaction Report(定期交易报告),financial-pdfs/对应 Annual Financial Disclosure(年度财务披露),可用于精准分类下载; -
扩展建议:如需下载文件,可使用
requests.get(pdf_url, stream=True)流式保存;若需处理大量数据,建议加入异常捕获、重试机制及日志记录。
该方法稳定、轻量且易于集成进数据采集流水线,是合规获取公开财政披露信息的实用技术路径。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










