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

Python爬取网页表格:如何去除空白项与元素内制表符空格?

网页表格爬取问题解决方案

问题描述

我使用Beautiful Soup编写的网页表格爬取脚本整体运行正常,但前两项结果存在以下问题:

  • Q1:第一个结果为空列表[],需要忽略该空项
  • Q2:第二个结果的第二个元素'12 -inch'存在隐藏制表符导致的多余空格,需要去除

原代码

import requests
import pandas as pd
from bs4 import BeautifulSoup

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
testlink = "https://www.crutchfield.com/p_13692194/JL-Audio-12TW3-D8.html?tp=64077"

r = requests.get(testlink, headers=headers)
soup = BeautifulSoup(r.content, 'lxml')
table = soup.find('table', class_='table table-striped')

df = pd.DataFrame(columns=['col1', 'col2'])
rows = []
for i, row in enumerate(table.find_all('tr')):
    rows.append([el.text.strip() for el in row.find_all('td')])                
    
for row in rows:
    print(row)

修改后的代码

import requests
import pandas as pd
from bs4 import BeautifulSoup
import re

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
testlink = "https://www.crutchfield.com/p_13692194/JL-Audio-12TW3-D8.html?tp=64077"

r = requests.get(testlink, headers=headers)
soup = BeautifulSoup(r.content, 'lxml')
table = soup.find('table', class_='table table-striped')

df = pd.DataFrame(columns=['col1', 'col2'])
rows = []
for row in table.find_all('tr'):
    td_list = [el.text.strip() for el in row.find_all('td')]
    # 过滤空列表
    if td_list:
        # 处理每个元素中的多余空白(包括制表符、多个空格)
        cleaned_td = [re.sub(r'\s+', ' ', item) for item in td_list]
        rows.append(cleaned_td)                
    
for row in rows:
    print(row)

问题解决说明

Q1:忽略空列表

在生成每行的td_list后,添加判断if td_list:,只有当列表不为空时才添加到rows中,直接跳过空的行结果。

Q2:去除隐藏制表符和多余空格

使用正则表达式re.sub(r'\s+', ' ', item),把任意数量的空白字符(包括制表符、多个空格)替换成单个空格,同时保留原本需要的单个空格(比如3 1/2这种格式)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:20:40