Python 高效提取 HTML 文本的方法

在这里插入图片描述
在解决自然语言处理问题时,有时你需要获得大量的文本集。互联网是文本的最大来源,但是从任意HTML页面提取文本是一项艰巨而痛苦的任务。

假设我们需要从各种网页中提取全文,并且要剥离所有HTML标记。通常,默认解决方案是使用BeautifulSoup软件包中的get_text方法,该方法内部使用lxml。这是一个经过充分测试的解决方案,但是在处理成千上万个HTML文档时可能会非常慢。

通过用selectolax替换BeautifulSoup,您几乎可以免费获得5-30倍的加速!

这是一个简单的基准测试,可分析commoncrawl(`处理NLP问题时,有时您需要获得大量的文本集。互联网是文本的最大来源,但是不幸的是,从任意HTML页面提取文本是一项艰巨而痛苦的任务。

假设我们需要从各种网页中提取全文,并且要剥离所有HTML标记。通常,默认解决方案是使用BeautifulSoup软件包中的get_text方法,该方法内部使用lxml。这是一个经过充分测试的解决方案,但是在处理成千上万个HTML文档时可能会非常慢。

通过用selectolax替换BeautifulSoup,您几乎可以免费获得5-30倍的加速!这是一个简单的基准测试,可分析commoncrawl(https://commoncrawl.org/)的10,000个HTML页面:

# coding: utf-8

from time import time

import warc
from bs4 import BeautifulSoup
from selectolax.parser import HTMLParser


def get_text_bs(html):
    tree = BeautifulSoup(html, 'lxml')

    body = tree.body
    if body is None:
        return None

    for tag in body.select('script'):
        tag.decompose()
    for tag in body.select('style'):
        tag.decompose()

    text = body.get_text(separator='\n')
    return text


def get_text_selectolax(html):
    tree = HTMLParser(html)

    if tree.body is None:
        return None

    for tag in tree.css('script'):
        tag.decompose()
    
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
Python文本处理是指使用Python编程语言对文本数据进行处理和分析的过程。Python提供了丰富的库和工具,使得文本处理变得简单和高效。 在Python中,可以使用以下库来进行文本处理: 1. re:用于正则表达式匹配和替换,可以用于文本的模式匹配和提取。 2. nltk:自然语言处理工具包,提供了各种文本处理和分析的功能,如分词、词性标注、命名实体识别等。 3. spaCy:另一个强大的自然语言处理库,提供了更快速和高效文本处理功能。 4. pandas:用于数据分析和处理的库,可以方便地读取、处理和分析文本数据。 5. gensim:用于主题建模和文本相似度计算的库,可以进行文本的主题分析和相似度计算。 6. scikit-learn:机器学习库,提供了各种文本分类、聚类和特征提取的算法。 在进行Python文本处理时,可以使用以下步骤: 1. 读取文本数据:使用Python的文件操作或第三方库(如pandas)读取文本文件或从其他数据源获取文本数据。 2. 文本清洗:去除文本中的噪声和无用信息,如HTML标签、特殊字符、停用词等。 3. 分词:将文本切分成单词或词语的序列,可以使用nltk或spaCy等库进行分词。 4. 词性标注:为每个词语标注其词性,可以使用nltk或spaCy等库进行词性标注。 5. 命名实体识别:识别文本中的人名、地名、组织名等实体,可以使用nltk或spaCy等库进行命名实体识别。 6. 文本向量化:将文本转换为数值特征表示,可以使用词袋模型(Bag of Words)或词嵌入(Word Embedding)等方法。 7. 文本分类或聚类:根据文本的特征进行分类或聚类分析,可以机器学习算法或深度学习模型进行分类或聚类。 8. 文本生成或摘要:根据已有的文本生成新的文本提取文本的摘要,可以使用生成模型或摘要算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值