婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python 提取html文本的方法

python 提取html文本的方法

熱門標簽:富錦商家地圖標注 外呼系統(tǒng)哪些好辦 沈陽防封電銷卡品牌 沈陽人工外呼系統(tǒng)價格 沈陽外呼系統(tǒng)呼叫系統(tǒng) 池州外呼調(diào)研線路 如何申請400電話費用 江西省地圖標注 武漢外呼系統(tǒng)平臺

假設(shè)我們需要從各種網(wǎng)頁中提取全文,并且要剝離所有HTML標記。通常,默認解決方案是使用BeautifulSoup軟件包中的get_text方法,該方法內(nèi)部使用lxml。這是一個經(jīng)過充分測試的解決方案,但是在處理成千上萬個HTML文檔時可能會非常慢。
通過用selectolax替換BeautifulSoup,您幾乎可以免費獲得5-30倍的加速!
這是一個簡單的基準測試,可分析commoncrawl(`處理NLP問題時,有時您需要獲得大量的文本集。互聯(lián)網(wǎng)是文本的最大來源,但是不幸的是,從任意HTML頁面提取文本是一項艱巨而痛苦的任務(wù)。
假設(shè)我們需要從各種網(wǎng)頁中提取全文,并且要剝離所有HTML標記。通常,默認解決方案是使用BeautifulSoup軟件包中的get_text方法,該方法內(nèi)部使用lxml。這是一個經(jīng)過充分測試的解決方案,但是在處理成千上萬個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()
    for tag in tree.css('style'):
        tag.decompose()

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


def read_doc(record, parser=get_text_selectolax):
    url = record.url
    text = None

    if url:
        payload = record.payload.read()
        header, html = payload.split(b'\r\n\r\n', maxsplit=1)
        html = html.strip()

        if len(html) > 0:
            text = parser(html)

    return url, text


def process_warc(file_name, parser, limit=10000):
    warc_file = warc.open(file_name, 'rb')
    t0 = time()
    n_documents = 0
    for i, record in enumerate(warc_file):
        url, doc = read_doc(record, parser)

        if not doc or not url:
            continue

        n_documents += 1

        if i > limit:
            break

    warc_file.close()
    print('Parser: %s' % parser.__name__)
    print('Parsing took %s seconds and produced %s documents\n' % (time() - t0, n_documents))
>>> ! wget https://commoncrawl.s3.amazonaws.com/crawl-data/CC-MAIN-2018-05/segments/1516084886237.6/warc/CC-MAIN-20180116070444-20180116090444-00000.warc.gz
>>> file_name = "CC-MAIN-20180116070444-20180116090444-00000.warc.gz"
>>> process_warc(file_name, get_text_selectolax, 10000)
Parser: get_text_selectolax
Parsing took 16.170367002487183 seconds and produced 3317 documents
>>> process_warc(file_name, get_text_bs, 10000)
Parser: get_text_bs
Parsing took 432.6902508735657 seconds and produced 3283 documents

顯然,這并不是對某些事物進行基準測試的最佳方法,但是它提供了一個想法,即selectolax有時比lxml快30倍。
selectolax最適合將HTML剝離為純文本。如果我有10,000多個HTML片段,需要將它們作為純文本索引到Elasticsearch中。(Elasticsearch有一個html_strip文本過濾器,但這不是我想要/不需要在此上下文中使用的過濾器)。事實證明,以這種規(guī)模將HTML剝離為純文本實際上是非常低效的。那么,最有效的方法是什么?

  • PyQuery
from pyquery import PyQuery as pq

text = pq(html).text()
  • selectolax
from selectolax.parser import HTMLParser

text = HTMLParser(html).text()
  • 正則表達式
import re

regex = re.compile(r'.*?>')
text = clean_regex.sub('', html)

結(jié)果

我編寫了一個腳本來計算時間,該腳本遍歷包含HTML片段的10,000個文件。注意!這些片段不是完整的html>文檔(帶有head>和body>等),只是HTML的一小部分。平均大小為10,314字節(jié)(中位數(shù)為5138字節(jié))。結(jié)果如下:

pyquery
  SUM:    18.61 seconds
  MEAN:   1.8633 ms
  MEDIAN: 1.0554 ms
selectolax
  SUM:    3.08 seconds
  MEAN:   0.3149 ms
  MEDIAN: 0.1621 ms
regex
  SUM:    1.64 seconds
  MEAN:   0.1613 ms
  MEDIAN: 0.0881 ms

我已經(jīng)運行了很多次,結(jié)果非常穩(wěn)定。重點是:selectolax比PyQuery快7倍。

正則表達式好用?真的嗎?

對于最基本的HTML Blob,它可能工作得很好。實際上,如果HTML是p> Foo& Bar / p>,我希望純文本轉(zhuǎn)換應該是Foo&Bar,而不是Foo& bar。
更重要的一點是,PyQuery和selectolax支持非常特定但對我的用例很重要的內(nèi)容。在繼續(xù)之前,我需要刪除某些標簽(及其內(nèi)容)。例如:

h4 class="warning">This should get stripped./h4>
p>Please keep./p>
div style="display: none">This should also get stripped./div>

正則表達式永遠無法做到這一點。

2.0 版本

因此,我的要求可能會發(fā)生變化,但基本上,我想刪除某些標簽。例如:div class =“ warning”>  、 div class =“ hidden”> 和 div style =“ display:none”>。因此,讓我們實現(xiàn)一下:

  • PyQuery
from pyquery import PyQuery as pq

_display_none_regex = re.compile(r'display:\s*none')

doc = pq(html)
doc.remove('div.warning, div.hidden')
for div in doc('div[style]').items():
    style_value = div.attr('style')
    if _display_none_regex.search(style_value):
        div.remove()
text = doc.text()
  • selectolax
from selectolax.parser import HTMLParser

_display_none_regex = re.compile(r'display:\s*none')

tree = HTMLParser(html)
for tag in tree.css('div.warning, div.hidden'):
    tag.decompose()
for tag in tree.css('div[style]'):
    style_value = tag.attributes['style']
    if style_value and _display_none_regex.search(style_value):
        tag.decompose()
text = tree.body.text()

這實際上有效。當我現(xiàn)在為10,000個片段運行相同的基準時,新結(jié)果如下:

pyquery
  SUM:    21.70 seconds
  MEAN:   2.1701 ms
  MEDIAN: 1.3989 ms
selectolax
  SUM:    3.59 seconds
  MEAN:   0.3589 ms
  MEDIAN: 0.2184 ms
regex
  Skip

同樣,selectolax擊敗PyQuery約6倍。

結(jié)論

正則表達式速度快,但功能弱。selectolax的效率令人印象深刻。

以上就是python 提取html文本的方法的詳細內(nèi)容,更多關(guān)于python 提取html文本的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python識別html主要文本框過程解析
  • Python使用get_text()方法從大段html中提取文本的實例
  • python爬蟲入門教程--HTML文本的解析庫BeautifulSoup(四)
  • Python轉(zhuǎn)換HTML到Text純文本的方法
  • python如何發(fā)送帶有附件、正文為HTML的郵件
  • python中HTMLParser模塊知識點總結(jié)
  • python郵件中附加文字、html、圖片、附件實現(xiàn)方法
  • python 將html轉(zhuǎn)換為pdf的幾種方法
  • python爬蟲beautifulsoup解析html方法
  • python爬蟲 requests-html的使用
  • 關(guān)于pycharm 切換 python3.9 報錯 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的問題
  • Python HTMLTestRunner如何下載生成報告

標簽:株洲 通遼 常德 黑龍江 潛江 阿里 呂梁 銅川

巨人網(wǎng)絡(luò)通訊聲明:本文標題《python 提取html文本的方法》,本文關(guān)鍵詞  python,提取,html,文本,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python 提取html文本的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于python 提取html文本的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    不卡一区二区中文字幕| 国产欧美精品一区aⅴ影院 | 欧美精品乱人伦久久久久久| 国产黄色精品网站| 国产精品夫妻自拍| 亚洲国产精品精华液ab| 欧美一级久久久久久久大片| 国产a级毛片一区| 久久国产视频网| 午夜影视日本亚洲欧洲精品| 亚洲中国最大av网站| 国产精品视频一二三区| 欧美一区二区三区免费在线看| 亚洲国产精品欧美一二99| 国产专区欧美精品| 久久99精品国产91久久来源| 亚洲国产欧美在线| 亚洲欧美偷拍另类a∨色屁股| 国产精品青草久久| 亚洲男人天堂av| 亚洲青青青在线视频| 一区二区中文字幕在线| 国产精品嫩草影院av蜜臀| 欧美国产精品一区| 亚洲欧美一区二区不卡| 亚洲国产裸拍裸体视频在线观看乱了 | 99精品欧美一区二区蜜桃免费| 有码一区二区三区| 亚洲成人av福利| 日本怡春院一区二区| 韩国成人精品a∨在线观看| 国产成a人亚洲精| 91丨porny丨首页| 欧美日韩三级视频| 久久香蕉国产线看观看99| 国产欧美精品在线观看| 中文字幕欧美一| 亚洲成人av电影在线| 狠狠色丁香久久婷婷综合_中 | 天天综合天天综合色| 免费高清不卡av| 国产精品一区二区果冻传媒| 成人高清免费观看| 欧美精品自拍偷拍动漫精品| 久久久国产一区二区三区四区小说 | 欧美四级电影在线观看| 欧美一级久久久久久久大片| 亚洲美女淫视频| 91蜜桃视频在线| 国产精品对白交换视频| 国产一区二区三区最好精华液| 狠狠色丁香婷婷综合| 欧美亚一区二区| 日韩免费一区二区| 中国av一区二区三区| 亚洲1区2区3区4区| 丁香五精品蜜臀久久久久99网站 | 成人小视频免费观看| 日本精品一区二区三区高清| 日韩免费电影一区| 亚洲六月丁香色婷婷综合久久| 麻豆成人在线观看| 色嗨嗨av一区二区三区| 国产香蕉久久精品综合网| 丝瓜av网站精品一区二区 | 91美女福利视频| www精品美女久久久tv| 一区二区三区高清不卡| 国产一区欧美二区| 欧美日韩国产首页在线观看| 国产精品大尺度| 国产精品一区三区| 日韩情涩欧美日韩视频| 一级精品视频在线观看宜春院| 国产成人精品免费| 亚洲精品一区二区三区99| 亚洲国产精品久久久久秋霞影院| jlzzjlzz亚洲日本少妇| 久久新电视剧免费观看| 美女视频黄a大片欧美| 欧洲生活片亚洲生活在线观看| 国产蜜臀97一区二区三区 | 亚洲婷婷国产精品电影人久久| 韩国在线一区二区| 欧美一级二级在线观看| 亚洲123区在线观看| 色乱码一区二区三区88| 国产精品毛片高清在线完整版| 中文字幕中文字幕在线一区 | 亚洲国产一区视频| 欧美日韩激情在线| 懂色一区二区三区免费观看| 亚洲国产精品尤物yw在线观看| 精品电影一区二区| 制服丝袜中文字幕一区| 国产91综合网| 欧美aaaaaa午夜精品| 欧美中文字幕一区二区三区亚洲| 中文字幕一区二区三区视频 | 亚洲欧美激情小说另类| 99re视频精品| 成人欧美一区二区三区黑人麻豆| 精品久久一二三区| 免费高清成人在线| 久久欧美中文字幕| 粉嫩av一区二区三区| 亚洲欧洲性图库| 91视频91自| 一区二区三区四区在线免费观看| 91色porny在线视频| 亚洲精品高清在线观看| 欧美日韩一本到| 日韩不卡一区二区三区| 久久人人97超碰com| 成人精品一区二区三区四区| 亚洲蜜臀av乱码久久精品蜜桃| 欧美天天综合网| 精品一区二区三区蜜桃| 国产欧美一区二区精品久导航 | 91精品一区二区三区在线观看| 日韩va亚洲va欧美va久久| 欧美精品一区男女天堂| a亚洲天堂av| 视频一区二区中文字幕| 久久久美女毛片| 在线观看日韩毛片| 精品一区二区成人精品| 亚洲天堂久久久久久久| 欧美蜜桃一区二区三区| 国产精品一区二区三区99| 夜夜嗨av一区二区三区四季av| 3d动漫精品啪啪一区二区竹菊| 国产成人高清视频| 婷婷国产v国产偷v亚洲高清| 国产精品美女久久久久av爽李琼| 538在线一区二区精品国产| 国产成人免费视| 性做久久久久久免费观看欧美| 久久久亚洲综合| 欧美高清你懂得| eeuss国产一区二区三区| 毛片一区二区三区| 夜夜嗨av一区二区三区中文字幕 | 七七婷婷婷婷精品国产| 国产一区二区不卡老阿姨| 欧美日韩精品三区| 日本一区二区三区电影| 麻豆91精品91久久久的内涵| 欧美在线制服丝袜| 亚洲欧美电影一区二区| av色综合久久天堂av综合| 久久久久久久久久久久电影 | 日韩毛片高清在线播放| 日韩一级在线观看| 在线观看日韩国产| 国产精品影视在线| 免费在线观看一区二区三区| 亚洲一区中文日韩| 中文字幕+乱码+中文字幕一区| 日韩欧美卡一卡二| 制服丝袜在线91| 亚洲人成小说网站色在线| 日韩欧美一级片| 欧美人与性动xxxx| 色八戒一区二区三区| 91丨九色porny丨蝌蚪| 国产99久久久国产精品潘金网站| 久久精品久久精品| 免费观看日韩av| 亚洲动漫第一页| 亚洲一区二区三区精品在线| 亚洲欧美在线aaa| 国产精品美女久久久久久2018 | 亚洲一区二区偷拍精品| 亚洲精品视频在线看| 17c精品麻豆一区二区免费| 中文字幕不卡的av| 国产精品美女久久久久aⅴ国产馆| 国产午夜亚洲精品羞羞网站| 久久综合九色综合97婷婷| 26uuu亚洲| 精品国产乱码久久| 欧美国产综合色视频| 久久精品视频免费| 国产精品无人区| 中日韩av电影| 亚洲欧美一区二区在线观看| 亚洲欧美国产三级| 亚洲人亚洲人成电影网站色| 亚洲欧美日韩国产中文在线| 怡红院av一区二区三区| 天天综合天天综合色| 欧美aⅴ一区二区三区视频| 国产精品自产自拍| 一级日本不卡的影视| 91麻豆免费观看| 91免费在线播放| 欧美亚洲国产bt| 欧美日韩国产免费| 久久综合久久综合久久综合|