使用 Python 中的 clean-text 清理网络爬取数据


网络爬取已发展成为从网站获取信息的一种有效方法。它允许个人和组织出于各种目的收集信息,包括市场研究、情感分析和数据驱动的决策。但是,在线爬取通常会产生非结构化和杂乱无章的数据,在有效使用之前必须对其进行清理和预处理。Python 中的 clean-text 模块为清理网络爬取数据提供了一个完整且高效的解决方案,使用户能够预处理并从其爬取的数据中提取重要的见解。

Clean-text 是一个强大的 Python 包,用于文本清理和预处理。它包含各种函数和方法来处理与文本相关的任务,例如消除不需要的字符、规范化文本、删除停用词等等。通过利用 clean-text 的功能,您可以确保您的在线爬取数据干净、一致并适合进一步分析。

安装 clean-text 库是第一步。在您的终端或命令提示符中运行以下行,使用 pip 包管理工具安装 clean-text

pip install clean-text

安装完成后,您可以使用以下导入语句将 clean-text 库导入到您的 Python 脚本或笔记本中

from cleantext import clean

现在,让我们更详细地探讨 clean-text 用于清理网络爬取数据的一些常见用例

删除 HTML 标签

网页通常包含 HTML 标签,这些标签对于文本分析来说是不必要的。这些标签可能包括格式化元素、超链接或其他标记。Clean-text 提供了一个名为 clean_html() 的内置函数,可以有效地从您的爬取数据中删除 HTML 标签。通过应用此函数,您可以专注于网页的文本内容。以下是一个示例

示例

raw_text = "<p>Hello, <strong>world!</strong></p>"
cleaned_text = clean(raw_text, clean_html=True)
print(cleaned_text)

输出

"Hello, world!"

删除不需要的字符

网络爬取数据通常包含特殊字符、表情符号或与您的分析无关的非字母符号。这些字符会引入噪声并影响结果的准确性。Clean-text 允许您使用 clean() 函数删除不需要的字符。它使用正则表达式来识别和消除特殊字符,确保您的文本保持干净且重点突出。以下是一个示例

示例

raw_text = "This is a sentence with unwanted characters 🙅♀️❤️"
cleaned_text = clean(raw_text, clean_special_chars=True)
print(cleaned_text)

输出

"This is a sentence with unwanted characters"

规范化文本

文本规范化对于确保数据一致性至关重要。Clean-text 提供了一个带 lowercase 参数的 clean() 函数,允许您将文本转换为小写。这对于标准化文本并避免基于大小写敏感性的重复项特别有用。此外,您可以利用 clean-text 提供的其他规范化技术,例如删除变音符号或将文本转换为 ASCII 表示形式。以下是一个示例

示例

raw_text = "Hello, World!"
cleaned_text = clean(raw_text, lowercase=True)
print(cleaned_text) 

输出

"hello, world!"

删除停用词

停用词是在语言中常用的词,对于文本分析没有重要的意义。这些词,例如“the”、“is”和“and”,可以安全地从您的网络爬取数据中删除,以便专注于更有意义的内容。Clean-text 包含一个预定义的停用词列表,您可以使用 clean() 函数中的 remove_stopwords 参数轻松删除这些词。以下是一个示例

示例

raw_text = "This is an example sentence with some stop words"
cleaned_text = clean(raw_text, remove_stopwords=True)
print(cleaned_text) 

输出

"example sentence stop words"

删除标点符号

网络爬取数据可能包含标点符号,对于许多文本分析任务来说,这些标点符号是不必要的。Clean-text 提供了一个带 clean_punctuation 参数的 clean() 函数,允许您从爬取数据中删除标点符号。当标点符号对分析没有贡献或处理以不同方式处理标点符号的语言模型时,这可能特别有用。以下是一个示例

示例

raw_text = "This sentence includes punctuation!"
cleaned_text = clean(raw_text, clean_punctuation=True)
print(cleaned_text)

输出

"This sentence includes punctuation"

处理缩写

网络爬取数据通常包含缩写,例如“can't”或“won't”。Clean-text 提供了一个带 replace_with_contractions 参数的 clean() 函数,允许您处理缩写,方法是用其扩展形式替换它们。这对于保持文本数据的一致性和避免歧义可能很有价值。以下是一个示例

示例

raw_text = "I can't believe it!"
cleaned_text = clean(raw_text, replace_with_contractions=True)
print(cleaned_text)

输出

"I cannot believe it!"

删除非文本元素

网页可能包含非文本元素,例如图像、脚本或广告。在爬取数据时,通常希望将这些元素排除在文本分析之外。Clean-text 提供了一个带 clean_non_text 参数的 clean() 函数,允许您从爬取数据中删除非文本元素,只留下文本内容。以下是一个示例

示例

raw_text = "This is <img src='image.jpg'> an example"
cleaned_text = clean(raw_text, clean_non_text=True)
print(cleaned_text)

输出

"This is an example"

词形还原和词干提取

词形还原和词干提取是用于将单词简化为其基本形式或词根形式的技术。这些技术有助于减少单词的变化并实现更好的文本规范化。虽然 clean-text 不包含内置的词形还原或词干提取函数,但它可以与 NLTK 或 spaCy 等流行的 Python 库无缝集成,允许您将词形还原和词干提取纳入网络爬取数据清理管道中。

这些示例演示了 clean-text 用于清理网络爬取数据核心功能。但是,该库提供了更多功能和选项,用于高级文本清理。例如,clean-text 允许您从数据中删除 URL、电子邮件地址或数字。它还支持处理多种语言,使您能够预处理来自不同来源的文本数据。

在使用 clean-text 进行网络爬取数据清理时,务必记住尊重网站的服务条款,并确保您以合乎道德和负责任的方式爬取数据。始终确保您有权访问和爬取目标网站的数据,并注意对服务器资源的影响。

结论

作为强大的 Python 模块,clean-text 为清理网络爬取数据提供了一种实用且适应性强的方案。您可以通过利用其广泛的功能,快速预处理爬取的数据,消除多余的组件,并确保文本数据的准确性和一致性。在您的网络爬取项目中使用 clean-text,以最大化数据分析工作的价值。为了确保合乎道德的在线爬取,请务必遵守最佳实践和道德标准。

更新于: 2023年7月19日

1K+ 阅读量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告