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

如何将爬虫爬取的表格数据追加到pandas DataFrame并输出指定结构化格式

实现代码
import requests
from bs4 import BeautifulSoup
import pandas as pd

headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get('http://smartcatalog.emo-milano.com/it/espositore/a-mannesmann-maschinenfabrik-gmbh')
soup = BeautifulSoup(response.content, 'html.parser')
tables = soup.find_all('table', class_='expo-table general-color')

# 存储字段键值对
data_dict = {}
for table in tables:
    # 遍历表格每行
    for tr in table.find_all('tr'):
        tds = tr.find_all('td')
        # 过滤有效行(至少2个td节点)
        if len(tds) >= 2:
            # 拼接字段名和值,处理多段文本的情况
            field = ' '.join([text for text in tds[0].stripped_strings])
            value = ' '.join([text for text in tds[1].stripped_strings])
            data_dict[field] = value

# 可选:字段名翻译为中文
translate_map = {
    'Indirizzo': '地址',
    'Città': '城市',
    'Nazionalità': '国籍',
    'Sito web': '官网',
    'Stand': '展位',
    'Telefono': '电话',
    'Fax': '传真',
    'E-mail': '邮箱',
    'Membro di': '所属协会',
    'Social': '社交账号'
}
data_dict = {translate_map.get(k, k): v for k, v in data_dict.items()}

# 转成两列结构的DataFrame
df = pd.DataFrame(data_dict.items(), columns=['字段名', '字段值'])

# 输出对齐的结构化内容
print(df.to_string(index=False, header=False))
代码说明
  • 原代码直接遍历所有td节点,没有对齐字段名和对应值,修改后按<tr>行节点遍历,每行取前2个td分别作为字段名、字段值
  • 用空格拼接同个节点下的多段拆分字符串,避免内容丢失
  • 支持两种输出结构:如果需要把所有字段作为列名、单条数据存为一行,替换DataFrame生成逻辑为df = pd.DataFrame([data_dict])即可
  • 内置意大利语字段转中文的映射,不需要可以直接删除对应代码块

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:54:04