Python爬虫解析网页的提取html信息的常用方式


Python爬虫解析网页的提取html信息的常用方式

一、正则表达式

正则表达式匹配不推荐,因为已经有很多现成的库可以直接用,不需要我们去大量定义正则表达式,还没法复用,在此仅作参考了解。

正则表达式通常被用来检索、替换符合某个条件的文本,所以我们可以利用这个原理来提取我们想要的信息。

正则的有点是匹配效率高,缺点是编写麻烦,理解不容易,在目前由太多现成的HTML内容解析库的前提下,已经不太建议再用正则来对内容进行匹配了,手写正则表达式费时费力。而且重用性也不高

二、requests-html

requests-html 是比较新的一个库,高度封装且源码清晰,它直接整合了大量解析时繁琐复杂的操作,同时支持DOM解析和XPath解析两种方式,灵活方便,这是我目前用得较多的一个库

安装使用:

PowerShell 全选
pip install requests-html

比较常用的解析库,作者是编写requests库的网红程序员 Kenneth Reitz,他在requests的基础上加上了对html内容的解析,就变成了requests-html这个库了。

我喜欢用requests-html来解析内容的原因是因为作者依据帮我高度封装过了,连请求返回内容的编码格式转换也自动做了,完全可以让我的代码逻辑简单直接,更专注于解析工作本身。

已失效:requests-html中文文档 (cncert.github.io)

github地址:https://github.com/psf/requests-html

官方文档:https://requests-html.kennethreitz.org/

 

三、BeautifulSoup

BeautifulSoup是基于DOM的方式,简单的说就是会在解析时把整个网页内容加载到DOM树里,内存开销和耗时都比较高,处理海量内容时不建议使用。不过BeautifulSoup不需要结构清晰的网页内容,因为它可以直接find到我们想要的标签,如果对于一些HTML结构不清晰的网页,它比较适合。

安装使用:

PowerShell 全选
pip install beautifulsoup4

大名鼎鼎的 BeautifulSoup库,出来有些年头了,在Pyhton的HTML解析库里属于重量级的库,其实我评价它的重量是指比较臃肿,大而全,而且依赖Python,适用场景受到了局限性。

BeautifulSoup解析内容同样需要将请求和解析分开,从代码清晰程度来讲还将就,不过在做复杂的解析时代码略显繁琐,总体来讲可以用,看个人喜好吧。

四、Lxml的XPath

lxml这个库同时 支持HTML和XML的解析,支持XPath解析方式,解析效率挺高,不过我们需要熟悉它的一些规则语法才能使用。

XPath是基于SAX的机制来解析,不会像BeautifulSoup去加载整个内容到DOM里,而是基于事件驱动的方式来解析内容,更加轻巧。不过XPath要求网页结构需要清晰,而且开发难度比DOM解析的方式高一点,推荐在需要解析效率时使用

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:Python Windows服务
下一篇:Python使用html解析包Requests-html运行py文件没问题,Pyinstaller打包exe后运行报错
评论列表

发表评论

评论内容
昵称:
关联文章

Python爬虫解析网页提取html信息方式
网站分享
Python使用html解析包Requests-html运行py文件没问题,Pyinstaller打包exe后运行报错
selenium爬虫被检测到 该如何破
SEO优化:HTML5扩展之微数据与丰富网页摘要
Python Selenium 前端如何检测Chrome-Headless不被爬虫
Python Selenium 爬虫如何隐藏Headles-Chrome不被检测出来 避免检测
SQL Server中全局变量介绍
.net HTML解析工具HtmlAgilityPack使用
带有爬虫检测网站汇总
支付宝:网页获得用户信息
支付宝:网页获得用户信息
ABP VNext框架中Winform终端开发和客户端授权信息处理
C# 解析加载读取XML文件正确姿势
MSSQL 查询集成工具 SQLServerTools
C#爬虫:使用Selenium,Selenium配置指南
在Winform项目和Web API.NetCore项目中使用Serilog 来记录日志信息
Python使用selenium+chrome配置指南
Python Selenium ChromeDriver 规避检测
微信浏览器网页调试几中方法

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码