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

网站数据抓取最优方法咨询及IRS 990 Form Schedule J数据提取需求

抓取IRS 990 Schedule J数据的方案与最佳实践

通用网页数据抓取的最佳实践

  • 优先用官方API:如果目标网站提供开放API(比如Propublica的Nonprofit Explorer API),这是最合规稳定的方式,数据格式规整,还能避开反爬限制。
  • 遵守robots.txt规则:爬前检查目标站的robots.txt,明确可抓取范围,避免违规操作。
  • 控制请求频率:每两次请求间隔1-3秒,减轻服务器压力,降低IP被封风险。
  • 动态内容用无头浏览器:如果页面依赖JS渲染,用Playwright、Puppeteer模拟真实浏览器加载,确保拿到完整数据。
  • 结构化存储与去重:抓取后将数据存入CSV、JSON或数据库,同时做好去重,避免冗余。

针对IRS 990 Schedule J的具体抓取与筛选方案

1. 页面结构分析

目标页面的核心元素:

  • 纳税人名称:位于页面顶部组织信息区,可通过h1标签或特定class(如organization-name)定位。
  • Schedule J数据:以表格形式呈现,包含高管/关键员工的薪酬信息,可通过table标签及对应class(如schedule-j-table)定位。

2. 工具选择

根据技术栈选合适工具:

  • Python:静态页面用requests+BeautifulSoup,动态页面用Playwright。
  • JavaScript:静态页面用axios+cheerio,动态页面用Puppeteer。

3. Python代码示例

import requests
from bs4 import BeautifulSoup

# 目标页面地址
target_url = "https://projects.propublica.org/nonprofits/organizations/452766110/202031279349301913/IRS990ScheduleJ"

# 模拟浏览器请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

# 发送请求并解析
response = requests.get(target_url, headers=headers)
response.encoding = "utf-8"
soup = BeautifulSoup(response.text, "html.parser")

# 提取纳税人名称
taxpayer_name = soup.find("h1", class_="organization-name").get_text(strip=True)
print(f"纳税人名称:{taxpayer_name}")

# 提取Schedule J表格数据
schedule_j_table = soup.find("table", class_="schedule-j-table")
# 跳过表头行,遍历数据行
for row in schedule_j_table.find_all("tr")[1:]:
    cols = row.find_all("td")
    if cols:
        employee_data = {
            "姓名": cols[0].get_text(strip=True),
            "职位": cols[1].get_text(strip=True),
            "薪酬总额": cols[2].get_text(strip=True),
            "其他补偿": cols[3].get_text(strip=True)
            # 可根据实际表格列扩展字段
        }
        print(employee_data)

4. 纳税人名称筛选逻辑

如果要批量抓取并筛选:

  • 准备目标纳税人名称列表。
  • 通过Propublica的搜索功能或API,获取每个纳税人对应的EIN(雇主识别号),构造其Schedule J页面的URL(URL格式通常为https://projects.propublica.org/nonprofits/organizations/[EIN]/[报税年份ID]/IRS990ScheduleJ)。
  • 对每个页面执行抓取,将提取到的纳税人名称与目标列表对比,匹配则保存数据。

5. 反爬应对技巧

  • 随机更换User-Agent,避免固定标识被识别。
  • 用代理IP池,IP被限制时自动切换。
  • 分批次执行任务,避免短时间内发送大量请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:40:31