n行Python代码系列:三行程序将提取HTML中的纯文本信息

☞ ░ 老猿Python博文目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036

一、引言

最近看到好几篇类似“n行Python代码…”的博文,看起来还挺不错,简洁、实用,传播了知识、带来了阅读量,撩动了老猿的心,决定跟风一把,推一个“n行Python代码系列”文章。

今天介绍使用3行代码从HTML文本中快速提取纯文本信息的简单快速方法。更多“n行Python代码系列”文章请参考免费专栏《https://blog.csdn.net/laoyuanpython/category_10858655.html n行Python代码系列》。

二、背景

老猿在通过程序获取网站博文信息时,有时需要获得博文的纯文本信息,但通过爬虫爬取的网页内容都是HTML报文,为此需要去除HTML报文中与标签相关的控制信息,只保留纯文本的信息。原以为需要费点时间,想到自己使用过的BeatifulSoap,在解析HTML标签时功能强大,应该有对应的办法,一查和验证,果然发现一个非常简单的办法,就是使用BeatifulSoap对象的text属性即可。

三、三行代码提取HTML报文中的纯文本信息

>>>from bs4 import BeautifulSoup
>>>text ="""<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <link rel="canonical" href="https://blog.csdn.net/LaoYuanPython/article/details/114454198"/>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta name="renderer" content="webkit"/>
    <meta name="force-rendering" content="webkit"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="report" content='{"pid": "blog", "spm":"1001.2101"}'>
    <meta name="referrer" content="always">
    <meta http-equiv="Cache-Control" content="no-siteapp" /><link rel="alternate" media="handheld" href="#" />
    <meta name="shenma-site-verification" content="5a59773ab8077d4a62bf469ab966a63b_1497598848">
    <meta name="applicable-device" content="pc">
    <link  href="https://g.csdnimg.cn/static/logo/favicon32.ico"  rel="shortcut icon" type="image/x-icon" />
    <title>Python爬虫入门实战3:获取CSDN个人博客信息_老猿Python-CSDN博客</title>
    
        <meta name="keywords" content="Python爬虫入门实战3:获取CSDN个人博客信息">
        <meta name="csdn-baidu-search"  content='{"autorun":true,"install":true,"keyword":"Python爬虫入门实战3:获取CSDN个人博客信息"}'>
    <meta name="description" content="本文结合CSDN博文的中关于博客的原创文章数、周排名、总排名、总阅读量、博客等级、积分、粉丝数、总获赞数、总评论、总收藏数以及按时间的发文情况的HTML报文信息,提供了爬取博文内容并分析这些信息的代码示例,有助于理解利用BeatifulSoap4结合多个标签分析爬取数据的HTML报文内容。">
    <script src='//g.csdnimg.cn/tingyun/1.8.3/blog.js' type='text/javascript'></script>
        <link rel="stylesheet" type="text/css" href="https://csdnimg.cn/release/blogv2/dist/pc/css/detail_enter-7353a41e6d.min.css">
    <script type="application/ld+json">{"@context":"https://ziyuan.baidu.com/contexts/cambrian.jsonld","@id":"https://blog.csdn.net/LaoYuanPython/article/details/114454198","appid":"1638831770136827","pubDate":"2021-03-06T19:53:45","title":"Python爬虫入门实战3:获取CSDN个人博客信息_老猿Python-CSDN博客","upDate":"2021-03-06T20:49:49"}</script>
        <link rel="stylesheet" type="text/css" href="https://csdnimg.cn/release/blogv2/dist/pc/themesSkin/skin-shark/skin-shark-39d3df9199.min.css">
    <script src="https://csdnimg.cn/public/common/libs/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
    <script src="https://g.csdnimg.cn/??fixed-sidebar/1.1.6/fixed-sidebar.js" type="text/javascript"></script>
    <script src='//g.csdnimg.cn/common/csdn-report/report.js' type='text/javascript'></script>
    <link rel="stylesheet" type="text/css" href="https://csdnimg.cn/public/sandalstrap/1.4/css/sandalstrap.min.css">
    <style>
        .MathJax, .MathJax_Message, .MathJax_Preview{
            display: none
        }
    </style>
    <script src="https://dup.baidustatic.com/js/ds.js"></script>
</head>"""
>>> soup =  BeautifulSoup(text,'lxml')
>>> soup.text
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nPython爬虫入门实战3:获取CSDN个人博客信息_老猿Python-CSDN博客\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'
>>> 

上面的代码总共四行,其中一行是HTML文本赋值的,真正与提取相关的就三行代码,分别实现了导入BeautifulSoup、构建BeautifulSoup对象、显示报文中的纯文本。

四、BeautifulSoup相关知识

BeautifulSoup是bs4模块的类,它是一个高效的网页解析库,是用于解析、遍历、维护网页“标签树”的功能库,可以从 HTML 或 XML 文件中提取数据。BeautifulSoup对象对应一个HTML/XML文档的全部内容。

beautifulsoup支持不同的解析器,比如,对HTML解析,对XML解析,对HTML5解析。一般情况下,我们用的比较多的是 lxml 解析器。

lxml是一款XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的数据,它可以被BeautifulSoup用于解析HTML文本,当然BeautifulSoup自己也默认带有解析器,也可以支持一些其他解析器。

在操作系统命令行方式执行安装bs4模块和lxml解析器模块的命令:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bs4
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple lxml

因为BeautifulSoup是bs4模块提供的一个类,一般导入时使用:

from bs4 import BeautifulSoup

更多关于BeautifulSoup的介绍请参考《Python爬虫入门 》

专栏网址https://blog.csdn.net/laoyuanpython/category_10762553.html

五、小结

本文介绍了使用Python BeautifulSoup模块快速解析HTML报文,并提取HTML报文中的纯文本信息的方法和案例,通过BeautifulSoup模块可简单快速完成从HTML文本中提取出去除标签信息的纯文本,方便后续程序的使用。

写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

如果对文章内容存在疑问,可以在博客评论区留言,或关注:老猿Python 微信公号发消息咨询。

关于老猿的付费专栏

  1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录
  4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

跟老猿学Python!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython

猜你喜欢

转载自blog.csdn.net/LaoYuanPython/article/details/114651075