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

如何修改Python爬虫代码以正确抓取密西西比州议会网站的法案内容?

解决密西西比州议会网站法案爬取问题

问题根源

原代码的核心问题有两个:

  1. 选择器soup.select('tbody')仅选中页面的<tbody>容器本身,提取的文本是所有内容混在一起的字符串,无法拆分单个法案信息;
  2. 后续用pd.DataFrame.from_dict的方式错误,导致最终CSV输出异常。

正确的思路是定位到每个法案对应的表格行,再提取每行内的字段内容。

修正后的代码

import requests
from bs4 import BeautifulSoup
import pandas as pd

urls = ['http://www.legislature.ms.gov/legislation/all-measures/']
bills_data = []

for url in urls:
    r = requests.get(url)
    soup = BeautifulSoup(r.content, 'html.parser')
    
    # 替换选择器,定位到tbody下的每个法案行(tr元素)
    bill_rows = soup.select('tbody tr')
    
    for row in bill_rows:
        cells = row.find_all('td')
        # 确保行内有足够的单元格,避免索引越界
        if len(cells) >= 4:
            bill_info = {
                '法案编号': cells[0].text.strip(),
                '法案标题': cells[1].text.strip(),
                '状态': cells[2].text.strip(),
                '提交日期': cells[3].text.strip()
            }
            bills_data.append(bill_info)

# 转换为DataFrame并保存CSV
df = pd.DataFrame(bills_data)
df.to_csv('3-New Bills.csv', index=False, encoding='utf-8')

关键修改说明

  1. 选择器替换:将tbody改为tbody tr,直接定位到每个独立的法案行,而非整个表格容器;
  2. 数据结构优化:用列表存储每个法案的字典,每个字典对应CSV的一行数据,结构清晰且符合DataFrame的生成要求;
  3. 字段清洗:用strip()去除文本中的多余空白字符,保证数据整洁;
  4. CSV保存优化:添加index=False避免生成冗余索引列,指定编码防止中文(若有)乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:06:22