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

Python爬虫CSV数据追加错误:数据错位问题排查与修正

解决Selenium+BeautifulSoup爬虫CSV数据错位问题(Name与Website不对应)

问题现象

爬取mergr.com网站数据并写入CSV后,出现Name字段内容全部在上半部分,Website字段内容全部在下半部分的错位情况,无法实现一行对应一组Name和Website的格式。

问题根源

原代码逻辑错误:先遍历抓取所有Name,将每个Name封装成单独字典追加到列表;再遍历抓取所有Website,同样封装成单独字典追加到列表。用这种列表生成DataFrame时,前半段数据只有Name键,后半段只有Website键,最终CSV里就会出现数据错位。

错误代码示例:

from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd

driver = webdriver.Chrome()
driver.get("https://mergr.com/xxx")
soup = BeautifulSoup(driver.page_source, 'html.parser')

data_list = []
# 先追加所有Name字典
names = soup.select(".name-selector")
for name in names:
    data_list.append({"Name": name.text.strip()})
# 再追加所有Website字典
websites = soup.select(".website-selector")
for website in websites:
    data_list.append({"Website": website.text.strip()})

# 生成CSV时数据错位
df = pd.DataFrame(data_list)
df.to_csv("mergr_data.csv", index=False)
driver.quit()

解决方案

调整循环逻辑,在单次循环中同时抓取当前条目的Name和Website,整合到同一个字典后再追加到列表,确保每个字典都包含一组对应的Name和Website键值对。

正确代码示例:

from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd

driver = webdriver.Chrome()
driver.get("https://mergr.com/xxx")
soup = BeautifulSoup(driver.page_source, 'html.parser')

data_list = []
# 定位每个条目容器,遍历每个容器获取对应Name和Website
items = soup.select(".item-container-selector")  # 替换为实际条目容器选择器
for item in items:
    name = item.select_one(".name-selector").text.strip() if item.select_one(".name-selector") else ""
    website = item.select_one(".website-selector").text.strip() if item.select_one(".website-selector") else ""
    # 同一字典封装对应数据
    data_list.append({"Name": name, "Website": website})

# 生成CSV时每行对应一组数据
df = pd.DataFrame(data_list)
df.to_csv("mergr_data.csv", index=False)
driver.quit()

关键说明:

  • 核心是找到每个数据条目的共同父容器,通过遍历父容器来确保Name和Website属于同一组数据
  • 加入if判断避免因元素缺失导致的报错,保证代码健壮性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:30:47