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

使用BeautifulSoup爬取联邦公报数据并生成pandas DataFrame问题求助

问题解决指南:联邦公报搜索结果多页爬虫+DataFrame导出

问题1:DataFrame赋值清空爬取结果的解决

  • 原有代码的核心问题:你先把爬取结果存入了名为data的列表,最后一行直接执行data=pd.DataFrame(),相当于把data变量重新赋值为空白DataFrame,原有列表内容直接被覆盖,所以看起来被清空。
  • 正确逻辑:先按行存储每条结果的三个字段为字典/子列表,再统一传入DataFrame构造函数,同时指定列名即可保留全部数据。

问题2:多页URL规则适配

  • 该网站支持直接给第一页加&page=1参数,不需要单独区分第一页和后续页的URL格式,直接循环构造带页码的URL即可,不需要手动写死URL列表。

修正后完整可运行代码

import requests
import pandas as pd
from bs4 import BeautifulSoup as bs

# 基础配置
base_url = 'https://www.federalregister.gov/documents/search?conditions%5Bpublication_date%5D%5Bgte%5D=08%2F28%2F2021&conditions%5Bterm%5D=economy'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
# 要爬取的总页数,可自行修改数值
total_pages = 5
result_list = []

for page in range(1, total_pages+1):
    # 构造当前页URL,统一加page参数
    current_url = f"{base_url}&page={page}"
    resp = requests.get(current_url, headers=headers)
    soup = bs(resp.text, 'html.parser')
    # 先定位到每条搜索结果的父容器,避免字段错位
    items = soup.select('div.document-wrapper')
    for item in items:
        # 分别提取三个字段,加strip清除多余空白
        title = item.find('h5').get_text(strip=True)
        author = item.select_one('p.document-type-agency').get_text(strip=True)
        date = item.select_one('p.publication-date').get_text(strip=True).replace('Published ', '')
        # 存入结果列表
        result_list.append({
            'Title': title,
            'Author': author,
            'Date': date
        })

# 直接把结果列表转DataFrame
df = pd.DataFrame(result_list)
# 可查看前几行验证格式
print(df.head())
# 可选导出为本地csv文件
# df.to_csv('federal_register_economy.csv', index=False, encoding='utf-8-sig')

关键优化点说明

  • 放弃了原来通过全局下标提取标题、作者的逻辑,改为先定位单条结果的父容器,再从父容器内提取对应字段,完全避免不同字段数量不匹配导致的错位问题
  • 统一的URL构造逻辑,不需要单独处理第一页,修改total_pages参数即可调整爬取页数
  • 最终输出的DataFrame完全匹配你需要的Title/Author/Date三列格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:18:00