
本文介绍如何通过模拟表单提交的方式,调用众议院财务披露系统(disclosures-clerk.house.gov)的后端接口,批量获取指定年份的议员财务申报 pdf 链接,并支持按申报类型(如 ptr 或 financial)进一步筛选。
本文介绍如何通过模拟表单提交的方式,调用众议院财务披露系统(disclosures-clerk.house.gov)的后端接口,批量获取指定年份的议员财务申报 pdf 链接,并支持按申报类型(如 ptr 或 financial)进一步筛选。
美国众议院财务披露公开系统(https://www.php.cn/link/7c5c19a19d6ce2d3a58c749b478ae9a2)虽未提供官方 API,但其前端搜索功能实际通过 POST 请求向 ViewMemberSearchResult 接口提交表单数据。这意味着我们可绕过浏览器交互,直接在 Python 中构造请求,高效获取结构化结果。
以下是一个简洁可靠的实现方案:
import requests
from bs4 import BeautifulSoup
# 配置搜索参数(支持年份、姓氏、州、选区等,留空表示不限)
search_params = {
"LastName": "", # 可填入姓氏缩小范围,如 "Zinke"
"FilingYear": "2024", # ⚠️ 关键:目标申报年份(注意:网站实际支持年份以页面下拉菜单为准)
"State": "",
"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 错误
soup = BeautifulSoup(response.content, "html.parser")
# 提取所有以 .pdf 结尾的链接(涵盖 PTR 和 Financial 两类申报)
pdf_links = []
for link in soup.select('a[href$=".pdf"]'):
href = link["href"]
# 补全为绝对 URL(该站使用相对路径)
full_url = f"https://disclosures-clerk.house.gov/{href.lstrip('/')}"
pdf_links.append({
"name": link.get_text(strip=True),
"url": full_url
})
print(f"共找到 {len(pdf_links)} 份 PDF 文件:")
for item in pdf_links[:5]: # 仅展示前 5 条示例
print(f"- {item['name']} → {item['url']}")
✅ 进阶筛选技巧:若需仅下载「Public Financial Disclosure Reports」(Financial)或「Periodic Transaction Reports」(PTR),可通过 href 路径关键词过滤:
SkillSub Pro - Python 题解与代码注释双功能技能功能概述SkillSub Pro - Python 题解与代码注释双功能技能是一项面向实际任务的技能,主要用于SkillSub Pro 是一个 Python 题解生成与代码注释的 双功能合体技能 ,专为学生、算法学习者和开发者设计;✅ 一个技能,两种用途 :;核心要点📝 题解模式 :输入题目/题号,自动生成完整 Python 题解(含详细注释、解题思路、复杂度分析);💬 注释模式 :输入 Python 代码,自动添加详细中。它将相关步骤、
# 仅保留 Financial 类型(路径含 'financial-pdfs') financial_pdfs = [p for p in pdf_links if "financial-pdfs" in p["url"]] # 仅保留 PTR 类型(路径含 'ptr-pdfs') ptr_pdfs = [p for p in pdf_links if "ptr-pdfs" in p["url"]]
⚠️ 注意事项:
- 年份有效性:网站后台未必实时支持最新年份(如 2024 年数据可能尚未全部上线),建议先手动访问页面确认下拉选项;
-
反爬机制:该站点无强反爬策略,但建议添加
headers={"User-Agent": "Mozilla/5.0..."}模拟常规浏览器请求; -
下载稳定性:PDF 链接为相对路径,务必补全为完整 HTTPS 地址;部分链接可能因权限或归档变动失效,建议添加
requests.head()预检; -
法律与合规:所有数据均属美国联邦政府公开信息(U.S. House Clerk’s Office),符合《信息自由法》(FOIA)要求,但批量下载请遵守
robots.txt(该站允许/FinancialDisclosure/路径抓取)并控制请求频率(建议 ≥1 秒间隔)。
通过上述方法,你可在数秒内完成数百份财务披露文件的链接采集,为后续自动化下载、OCR 解析或合规分析奠定坚实基础。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










