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

解析税号数据遇DataFrame无append属性报错,寻求解决方案

问题原因

AttributeError: 'DataFrame' object has no attribute 'append' 是因为Pandas 2.0及以上版本移除了DataFrame.append()方法,该方法在旧版Pandas中可用,但新版已被废弃。

解决办法

最高效的替代方案是先将所有待添加的数据存入一个列表,最后一次性转换为DataFrame,避免频繁创建新DataFrame带来的性能损耗。同时修复代码中record_count的提取问题(当前直接存储BeautifulSoup对象会导致Excel中数据异常)。

修改后的完整代码:

import requests
from bs4 import BeautifulSoup
import pandas as pd

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0;Win64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/"
}

# 初始化空列表存储数据,替代原空DataFrame
data_list = []

values = [9704093992, 9718162290, 7727362380, 9723114824, 9701225810]

for value in values:
    url = f"https://zakupki.gov.ru/epz/dishonestsupplier/search/results.html?searchString={value}&morphology=on&search-filter=%D0%94%D0%B0%D1%82%D0%B5+%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F&savedSearchSettingsIdHidden=&sortBy=UPDATE_DATE&pageNumber=1&sortDirection=false&recordsPerPage=_10&showLotsInfoHidden=false&fz94=on&fz223=on&ppRf615=on&dsStatuses=&inclusionDateFrom=&inclusionDateTo=&lastUpdateDateFrom=&lastUpdateDateTo="
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.content, "html.parser")
    results = soup.find_all("div", class_="search-registry-entry-block")
    # 全局提取记录数量,处理元素不存在的情况
    record_count_elem = soup.find("div", class_="search-results__total")
    record_count = record_count_elem.text.strip() if record_count_elem else "0"
    
    for result in results:
        data = result.find("div", class_="registry-entry__body-block").text.strip()
        inclusion_date = result.find("div", class_="data-block__value").text.strip()
        
        # 将数据字典添加到列表
        data_list.append(
            {
                "Значение": value,
                "Найдено результатов": len(results),
                "ИНН поставщика": data,
                "Даты включения": inclusion_date,
                "Количество записей": record_count,
            }
        )

# 最后将列表转换为DataFrame
df = pd.DataFrame(data_list, columns=[
    "Значение",
    "Найдено результатов",
    "ИНН поставщика",
    "Даты включения",
    "Количество записей",
])

df.to_excel("results.xlsx", index=False)
关键修改点
  • 用空列表data_list替代初始空DataFrame,循环中向列表添加数据字典
  • 移除df.append()调用,最后通过pd.DataFrame(data_list)生成最终DataFrame
  • 修复record_count的提取逻辑:从页面全局提取(而非每个result节点中查找),并处理元素不存在的情况,避免存储无效的BeautifulSoup对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:04:51