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

Python爬取网页表格后无法去除\n字符,求解决方案

解决Python爬取网页表格时无法去除\n字符的问题

我太懂这种被顽固换行符折腾的感觉了!你试过的replace、split这些方法没起效,其实是因为你获取文本的方式没找对——咱们直接来改代码解决问题。

问题根源

你现在用td.get_text()直接获取整行的文本,这会把每个<td>元素里的内容(包括换行符、空白)全部连在一起,事后再处理就容易漏网。正确的做法是逐个处理每个单元格的文本,从源头就把换行符干掉。

修改后的完整代码

from urllib.request import urlopen
from bs4 import BeautifulSoup
import requests
import pandas as pd

url = "https://shared.websol.barchart.com/quotes/quote.php?page=quote&sym=ng&x=13&y=8&domain=if&display_ice=1&enabled_ice_exchanges=&tz=0&ed=0"
res = requests.get(url)
soup = BeautifulSoup(res.text, 'lxml')

# 获取表头,同时清理空白
column_headers = [th.getText(strip=True) for th in soup.findAll('tr', limit=2)[1].findAll('th')]
print(column_headers)

# 获取数据行
data_rows = soup.findAll('tr')[2:]

# 处理每一行的单元格,彻底清理换行符
cleaned_data = []
for row in data_rows:
    # 遍历每个td,先去除首尾空白(含\n),再清理中间可能残留的换行
    row_data = [cell.get_text(strip=True).replace('\n', '') for cell in row.find_all('td')]
    cleaned_data.append(row_data)
    print(row_data)

# 可选:将清理后的数据存入DataFrame
df = pd.DataFrame(cleaned_data, columns=column_headers)
print(df)

关键改动说明

  • 表头部分也加上了strip=True,避免表头里隐藏的空白字符干扰后续数据处理
  • 遍历数据行时,不再直接取整行文本,而是逐个处理每个<td>元素:
    • get_text(strip=True):自动去除文本开头和结尾的换行符、空格、制表符等空白字符
    • 额外补充.replace('\n', ''):防止单元格中间残留换行符(虽然大部分情况strip=True就足够,但多这一步更保险)

效果验证

修改后你会看到输出的每一行都是干净的列表,比如:

['Cash (NGY00)', '2.890s', '+0.020', '0.000', '2.890', '2.890', '0', '2.870', '05/25/18', 'Q / C / O']

完全没有烦人的换行符了,后续存入DataFrame也不会有格式混乱的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:55:01