bs4.element.ResultSet元素存入列表出现多余空白字符如何解决
BeautifulSoup提取分类文本冗余空白问题修复方案
问题原因
你的代码存在两个核心问题导致输出带大量冗余空白:
- 选择器粒度太大:直接提取整个导航ul元素的文本,会把所有分类的内容混杂在同一个字符串里,同时携带HTML渲染生成的大量换行、空格字符
- 未做文本清理:提取文本时没有对空白字符做过滤处理,还误用了Python内置关键字
list作为变量名,可能引发后续逻辑报错
修正后可直接运行的代码
import requests from bs4 import BeautifulSoup import sqlite3 import lxml response = requests.get('https://books.toscrape.com/') soup = BeautifulSoup(response.text, 'lxml') # 先定位导航栏,再提取所有分类对应的a标签 category_tags = soup.find("ul", class_ = 'nav nav-list' ).find_all('a') category_list = [] for tag in category_tags: # get_text的strip参数直接清理首尾所有空白字符 cate_name = tag.get_text(strip=True) # 过滤空内容避免无效值 if cate_name: category_list.append(cate_name) print(category_list)
输出效果
处理后得到的列表格式如下:
['Books', 'Travel', 'Mystery', 'Historical Fiction', 'Sequential Art', 'Classics', 'Philosophy', ...]
处理后的纯净文本可直接写入SQLite数据表使用。
内容的提问来源于stack exchange,提问作者Fady Esam
相关产品推荐
相关产品推荐

