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

Python网页表格爬取遇ValueError列数不匹配问题求助

解决"ValueError: cannot set a row with mismatched columns"问题

问题根源是你创建DataFrame时砍掉了最后4列,但爬取的每行数据仍保留完整列数,两者长度不匹配导致报错。以下是修正方案:

修正后的完整代码

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = 'https://kr.youtubers.me/united-states/all/top-500-youtube-channels-in-united-states/en'
page = requests.get(url)
soup = BeautifulSoup(page.text,'lxml')
table1 = soup.find('div', id = 'content')

headers = []
for i in table1.find_all('th'):
    title = i.text.strip()
    headers.append(title)

# 直接截取需要的表头,无需先创建全量DataFrame再删除列
filtered_headers = headers[:-4]
my_data = pd.DataFrame(columns = filtered_headers)

# 遍历行数据时,同步截取与表头匹配的长度
for j in table1.find_all('tr')[1:]:
    row_data = j.find_all('td')
    row = [i.text.strip() for i in row_data]
    # 截取对应长度的行数据,保证和DataFrame列数一致
    filtered_row = row[:len(filtered_headers)]
    my_data.loc[len(my_data)] = filtered_row

关键修改点

  • 提前处理表头:直接通过headers[:-4]截取目标表头,替代先创建全列DataFrame再用iloc删除的冗余操作。
  • 同步截断行数据:用row[:len(filtered_headers)]动态匹配表头长度,避免硬编码数字,适配表头结构变化。
  • 清理冗余字符:加入.strip()清除文本中的换行、空格,提升数据整洁度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:30:45