Python中第三方的用于解析HTML的库:BeautifulSoup

Python爬虫(三):BeautifulSoup库 BeautifulSoup 是一个可以从 HTML 或 XML 文件中提取数据的 Python 库,它能够将 HTML 或 XML 转化为可定位的树形结构,并提供了导航、查找、修改功能,它会自动将输入文档转换为 Unicode 编码,输出文档转换为 UTF-8 编码。 阅读详情

背景

在Python去写爬虫,网页解析等过程中,比如:

如何用Python,C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站

常常需要涉及到HTML等网页的解析。

当然,对于简单的HTML中内容的提取,Python内置的正则表达式Re模块,就足够用了,

但是对于复杂的HTML的处理,尤其是一些非法的,有bug的html代码的处理,那么最好还是用专门的HTML的解析的库。

Python中的,专门用于HTML解析的库,比较好用的,就是BeautifulSoup。

 

BeautifulSoup简介

Python中,专门用于HTML/XML解析的库;

特点是:

即使是有bug,有问题的html代码,也可以解析。

功能很强大;

 

BeautifulSoup的主页是:

http://www.crummy.com/software/BeautifulSoup/

 

BeautifulSoup的版本

BeautifulSoup主要有两个版本:

 

BeautifulSoup 3

之前的,比较早的,是3.x的版本。

BeautifulSoup 3的在线文档

最新的,可用的,在线文档是:

http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html

中文版的是:

http://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html

 

下载BeautifulSoup 3

http://www.crummy.com/software/BeautifulSoup/bs3/download//3.x/

中可以下载到很多版本,比如我常用的3.0.6的版本:

BeautifulSoup-3.0.6.py

http://www.crummy.com/software/BeautifulSoup/bs3/download//3.x/BeautifulSoup-3.0.6.py

 

BeautifulSoup 4:缩写为bs4

最新的v4版本的BeautifulSoup,改名为bs4了。

 

注意:

使用bs4时,导入BeautifulSoup的写法是:

?
1
from  bs4  import  BeautifulSoup;

然后就可以像之前3.x中一样,直接使用BeautifulSoup了。

详见:

【已解决】Python3中,已经安装了bs4(Beautifulsoup 4)了,但是却还是出错:ImportError: No module named BeautifulSoup

bs4的在线文档

http://www.crummy.com/software/BeautifulSoup/bs4/doc/

 

下载bs4

http://www.crummy.com/software/BeautifulSoup/bs4/download/

可以下载到对应的bs4的版本,比如:

此时最新的版本是:

beautifulsoup4-4.1.3.tar.gz

http://www.crummy.com/software/BeautifulSoup/bs4/download/beautifulsoup4-4.1.3.tar.gz

BeautifulSoup的用法

如何安装BeautifulSoup

3.0.6之前:无需安装,放到和Python文件同目录下即可使用

3.0.6之前,都是不需要安装的,所以使用起来最简单,直接下载对应的版本,比如:

http://www.crummy.com/software/BeautifulSoup/bs3/download//3.x/BeautifulSoup-3.0.6.py

得到了BeautifulSoup-3.0.6.py,然后改名为:BeautifulSoup.py

然后,放到和你当前的python文件同目录下,比如我当前python文件是:

D:\tmp\tmp_dev_root\python\beautifulsoup_demo\beautifulsoup_demo.py

那就放到

D:\tmp\tmp_dev_root\python\beautifulsoup_demo\

下面,和beautifulsoup_demo.py同目录。

 

3.0.6之后:需要安装BeautifulSoup后才可使用

关于如何安装一个Python的第三方模块,简单说就是,进入对应目录,运行:

?
1
setup.py  install

详细解释可参考:

【总结】Python安装第三方的库、package的方法

 

如何使用BeautifulSoup

在你的Python文件,此处为beautifulsoup_demo.py,中直接import即可。

 

关于示例html代码,比如使用:

【教程】抓取网并提取网页中所需要的信息 之 Python版

 

相关参考文档:

3.x版本的:

find(name, attrs, recursive, text, **kwargs)

 

使用BeautifulSoup提取html中的某个内容

关于最简单的,最基本的用法,提取html中的某个内容,具体用法,就死使用对应的find函数。

完整代码是:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Function:
【教程】Python中第三方的用于解析HTML的库:BeautifulSoup
 
 
Author:     Crifan Li
Version:    2012-12-26
Contact:    admin at crifan dot com
"""
 
from  BeautifulSoup  import  BeautifulSoup;
 
def  beautifulsoupDemo():
     demoHtml  =  """
<html>
<body>
<div class="icon_col">
         <h1 class="h1user">crifan</h1>
  </div>
  </body>
</html>
""" ;
     soup  =  BeautifulSoup(demoHtml);
     print  "type(soup)=" , type (soup);  #type(soup)= <type 'instance'>
     print  "soup=" ,soup;
     
     # 1. extract content
     # method 1: no designate para name
     #h1userSoup = soup.find("h1", {"class":"h1user"});
     # method 2: use para name
     h1userSoup  =  soup.find(name = "h1" , attrs = { "class" : "h1user" });
     # more can found at:
     #http://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html#find%28name,%20attrs,%20recursive,%20text,%20**kwargs%29
     print  "h1userSoup=" ,h1userSoup;  #h1userSoup= <h1 class="h1user">crifan</h1>
     h1userUnicodeStr  =  h1userSoup.string;
     print  "h1userUnicodeStr=" ,h1userUnicodeStr;  #h1userUnicodeStr= crifan
 
if  __name__  = =  "__main__" :
     beautifulsoupDemo();

输出为:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
D:\tmp\tmp_dev_root\python\beautifulsoup_demo>beautifulsoup_demo.py
type (soup)= < type  'instance' >
soup=
<html>
<body>
<div class= "icon_col" >
<h1 class= "h1user" >crifan< /h1 >
< /div >
< /body >
< /html >
 
h1userSoup= <h1 class= "h1user" >crifan< /h1 >
h1userUnicodeStr= crifan

 

使用BeautifulSoup修改/改变/替换原先html中的某个内容

如果需要改变原先html中的某个值,可以参考官网解释:

修改属性值

后来证实,只能改(Tag的)中的属性的值,不能改(Tag的)的值本身

完整示例代码为:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Function:
【教程】Python中第三方的用于解析HTML的库:BeautifulSoup
 
 
Author:     Crifan Li
Version:    2013-02-01
Contact:    admin at crifan dot com
"""
 
from  BeautifulSoup  import  BeautifulSoup;
 
def  beautifulsoupDemo():
     demoHtml  =  """
<html>
<body>
<div class="icon_col">
         <h1 class="h1user">crifan</h1>
  </div>
  </body>
</html>
""" ;
     soup  =  BeautifulSoup(demoHtml);
     print  "type(soup)=" , type (soup);  #type(soup)= <type 'instance'>
     print  "soup=" ,soup;
     
     print  '{0:=^80}' . format ( " 1. extract content " );
     # method 1: no designate para name
     #h1userSoup = soup.find("h1", {"class":"h1user"});
     # method 2: use para name
     h1userSoup  =  soup.find(name = "h1" , attrs = { "class" : "h1user" });
     # more can found at:
     #http://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html#find%28name,%20attrs,%20recursive,%20text,%20**kwargs%29
     print  "h1userSoup=" ,h1userSoup;  #h1userSoup= <h1 class="h1user">crifan</h1>
     h1userUnicodeStr  =  h1userSoup.string;
     print  "h1userUnicodeStr=" ,h1userUnicodeStr;  #h1userUnicodeStr= crifan
     
     print  '{0:=^80}' . format ( " 2. demo change tag value and property " );
     print  '{0:-^80}' . format ( " 2.1 can NOT change tag value " );
     print  "old tag value=" ,soup.body.div.h1.string;  #old tag value= crifan
     changedToString  =  u "CrifanLi" ;
     soup.body.div.h1.string  =  changedToString;
     print  "changed tag value=" ,soup.body.div.h1.string;  #changed tag value= CrifanLi
     print  "After changed tag value, new h1=" ,soup.body.div.h1;  #After changed tag value, new h1= <h1 class="h1user">crifan</h1>
 
     print  '{0:-^80}' . format ( " 2.2 can change tag property " );  
     soup.body.div.h1[ 'class' ]  =  "newH1User" ;
     print  "changed tag property value=" ,soup.body.div.h1;  #changed tag property value= <h1 class="newH1User">crifan</h1>
 
if  __name__  = =  "__main__" :
     beautifulsoupDemo();

 

总结

更多的,用法和使用心得,部分内容,已整理到:

【总结】Python的第三方库BeautifulSoup的使用心得

【整理】关于Python中的html处理库函数BeautifulSoup使用注意事项

 

有空再统一整理到:

BeautifulSoup

【Python实用第三方包】BeautifulSoup 解析HTML和XML 网页爬取的库 是一个用于从网页和 XML 文档中提取数据的 Python 库。它提供了简洁的 API,能够以树形结构解析 HTML 或 XML 文档,并支持通过 CSS 选择器、标签、属性等方式轻松提取页面内容。 阅读详情

相关推荐

Python:Beautifulsoup4库的使用

使用requests库获取HTML页面并将其转换成字符串后,需要进一步解析HTML页面格式,提取有用信息,这需要处理HTML和XML的函数库。beautifulsoup4库,也称为Beautiful Soup库或bs4库,用于解析和处理HTML和XML。需要注意的是,它不是BeautifulSoup库。它的最大优点是能根据HTML和XML语法建立解析树,进而高效解析其中的内容。

衍生星球的博客 5621

BeautifulSoup - Python中第三方的用于解析HTML的库:BeautifulSoup - 转

转http://www.crifan.com/python_third_party_lib_html_parser_beautifulsoup/ 背景 在Python去写爬虫,网页解析等过程中,比如: 如何用Python,C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站 常常需要涉及到HTML等网页的解析。 当然,对于简单的HTML中内容的提取,Python内置的正则表达...

weixin_34199335的博客 268

ThirdLibStudy:第三方库学习

1,确定http 2,黄油刀 3,滑翔 4,rxjava2 5,事件总线 去做: 6,改造 7,渗漏 8,结实

python 解析html xml_Python中可以用来解析HTML和XML的第三方库是(_____)。

【判断题】量杯不是衡器。【单选题】86. 目前钻石油井主要是采用( )钻井方法。【单选题】Excel工作表中,把一个含有单元格坐标引用的公式复制到另一个单元格中时,其中所引用的单元格坐标保持不变。这种引用的方式( )。【填空题】写出函数的含义,SUM( )、AVERAGE( )、MAX( )、MIN( )【...

weixin_39999116的博客 522

OpenCV 常用的API总结(迅速查询)

OpenCV基本操作 openCV安装 读取图片(IO操作) 绘制集合图形 图像加法以及混合操作 OpenCV图像处理 图像几何变换 形态学操作 图像平滑 直方图 边缘检测 模板匹配 傅里叶变换 轮廓检测 图像分割 图像特征提取 SIFT检测关键点 视频读写............

Peyzhang的博客 3935

一文了解ECU软件刷写的2种方法:Bootloader刷写和调试器刷写

分为刷写前、刷写中和刷写后三个阶段,如下示意:下面我们来详细了解一下Bootloader收到外部请求后开始刷写的三个阶段1)刷写前进行刷写的准备,一是确保刷写阶段总线通信的稳定性,二是避免刷写阶段出现非预期的故障,三是读取车辆数据供刷写前的一些检查等,如下所示:首先进行会话控制,通过功能寻址方式进入扩展会话模式,为后面的信息访问及其他指令做准备;然后检查刷写的前提条件,通过物理寻址方式发送历程控制请求。比如车确实处于静止状态,供电电压稳定等条件下才允许刷写;

menghuyouyou的博客 5779

Python中的第三方库

是一个符号计算的库,是一个全功能的计算机代数系统。代码简洁、易于理解, 支持符号计算、高精度计算、模式匹配、 绘制、 解方程、 微积分 、组合数学、离散数学、 几何学、概率与统计、 物理学等领域的计算和应用。是图像处理方面的重要第三方库,支持图像存储、处理和显示, 能够处理几乎所有的图片格式,可以完成对图像的缩放 剪、叠加以及向图像添加线条、 图像和文字等操作。是一款方便、易用、 专为科学和工程设计的Python工具包, 它是在numpy库的基础上增加了众多的数学、 科学以及工程计算中常用的库函数。

2301_80002696的博客 759

瑞芯微rv1126 rtsp+mpp+rga取流

瑞芯微rv1109 rtsp+mpp+rga取流

ZuoSeDiao的博客 6338

Python:第三方库BeautifulSoup4 解析HTML网页

今天,我们将用Python的pip,安装下载一个第三方库BeautifulSoup4,它可以帮助我们分析HTML网页的内容。 1.安装BeautifulSoup4模块 在Windows系统下,打开一个cmd命令提示符,输入: pip install BeautifulSoup4 如果没有出现错误信息,则打开一个Python文件,输入: import bs4 运行代码,没有报错就说明成功安装。 2.使用BeautifulSoup4模块 from bs4 import BeautifulSoup 以上代

有意栽花花不发,无心插柳柳成荫。 1502

YOLO详解

本文参考知乎 https://zhuanlan.zhihu.com/p/25236464 1. YOLO的创新点 YOLO将物体检测作为回归问题求解。基于一个单独的end-to-end网络,完成从原始图像的输入到物体位置和类别的输出。 从网络设计上,YOLO与two steps的目标检测方法如RCNN、Fast RCNN和Faster RCNN的区别如下: YOLO训练和检测均是在一个单独网...

UnknownPlayer的博客 9945

SAP-ABAP:SAP采购业务核心表关联关系详解

MM(核心)、FI(财务)、SD(计划协议):PR → PO → GR → MIRO → FI过账。

baidu_35680696的博客 930

DOM查询

获取元素节点 通过document对象调用 getElementById() 通过Id属性获取一个元素节点对象 getElementsByTagName() 通过标签名获取 getElementsByName() 通过Name属性获取 获取元素节点的子节点 通过元素节点调用 getElementsByTagName() 通过标签名获取 例如: var city = docunment.getElementById("city"); # 查找city下所有的li节点 var lis = c

Always-Learning 530

优化算法 | 赏金猎人优化算法(Bounty Hunter Optimizer, BHO)及其在多无人机移动边缘计算与路径规划中的应用(附matlab源代码)

移动边缘计算(Mobile Edge Computing, MEC)通过将计算资源下沉至网络边缘,有效解决了物联网终端设备计算能力不足与能耗受限的问题。无人机(Unmanned Aerial Vehicle, UAV)因其高机动性、灵活部署和广域覆盖等优势,被广泛用作MEC的移动服务器平台。多无人机辅助MEC系统的核心优化问题在于:如何在满足任务处理时延约束和无人机能量限制的前提下,联合优化无人机的三维飞行轨迹、任务卸载决策与计算资源分配,以最小化系统总能耗或最大化任务完成效率。

尘世冰封的专栏 223

【教程】Python中第三方的用于解析HTML的库:BeautifulSoup

【教程】Python中第三方的用于解析HTML的库:BeautifulSoup 个人博客:  http://www.crifan.com/python_third_party_lib_html_parser_beautifulsoup/ 背景 在Python去写爬虫,网页解析等过程中,比如: 如何用Python,C#等语言去实现抓取静态网页+抓取动态网页+

duanlove(技术路途)专栏 4054

使用Python爬虫抓取旅游景点评价数据并进行热度可视化

景点热度通常由景点的评分、评论数以及游客的热情度来决定。高热度的景点通常意味着更高的游客评分和更多的游客评论。热度不仅反映了景点的受欢迎程度,还可以揭示某些景点的潜力和存在的问题。评分:游客对景点的综合评分,通常是0到5分。评论数:景点的评论数量,反映了游客对景点的关注程度。热度变化:在一定时间内,景点的评价和评论数量变化,能够反映景点的热度波动。通过使用Python爬虫技术抓取旅游景点的评价和评论数据,我们能够深入分析景点的热度,并通过数据可视化工具将这些信息展示给用户。

2201_76125261的博客 1282

【Qt图书管理系统】5.完整版源码及下载地址

Qt图书管理系统完整源码下载。

小鱼酱的博客 7001

[python-thirdLib] Python中第三方的用于解析HTML的库:BeautifulSoup

From: http://www.crifan.com/python_third_party_lib_html_parser_beautifulsoup/   背景 在Python去写爬虫,网页解析等过程中,比如: 如何用Python,C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站 常常需要涉及到HTML等网页的解析。 当然,对于简单的HTML中内容的提取,Python内

JoeBlackZQQ的专栏 1586

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python解析html的库_Python中第三方的用于解析HTML的库:BeautifulSoup

背景在Python去写爬虫,网页解析等过程中,比如:常常需要涉及到HTML等网页的解析。当然,对于简单的HTML中内容的提取,Python内置的正则表达式Re模块,就足够用了,但是对于复杂的HTML的处理,尤其是一些非法的,有bug的html代码的处理,那么最好还是用专门的HTML的解析的库。Python中的,专门用于HTML解析的库,比较好用的,就是BeautifulSoup。Beautiful...

weixin_39967812的博客 148

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python文档处理第三方库_【教程】Python中第三方的用于解析HTML的库:BeautifulSoup...

背景在Python去写爬虫,网页解析等过程中,比如:常常需要涉及到HTML等网页的解析。当然,对于简单的HTML中内容的提取,Python内置的正则表达式Re模块,就足够用了,但是对于复杂的HTML的处理,尤其是一些非法的,有bug的html代码的处理,那么最好还是用专门的HTML的解析的库。Python中的,专门用于HTML解析的库,比较好用的,就是BeautifulSoup。Beautiful...

weixin_39553753的博客 82

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python的BeautifulSoup库怎么用(详细教程)

以上就是一个比较详细的 BeautifulSoup 教程,包括安装、基本用法和一些高级应用。BeautifulSoup 可以帮助我们方便地解析 HTML 和 XML 文档,并从中提取所需的信息,是 Python 网络爬虫开发中常用的工具之一。

qq_40860747的博客 1万+

Python爬虫 —— 使用BeautifulSoup4解析HTML文档

我们来聊聊BS4是个啥,它能干啥,BS4是一个从HTML和XML文件中提取数据的python库,它可以将复杂HTML文件转换为一个复杂的树形结构,这棵树的每一个结点都是Python对象,所有对象都可以归纳为4类,这四个对象能干啥呢?点进来看看吧

小菜鸡的小博客 1万+

【Python】BeautifulSoup:HTML解析

BeautifulSoup 是 Python 中用于解析和处理 HTML 或 XML 文档的强大库。它提供了简洁的接口,能高效处理复杂的网页结构,非常适合网页爬虫和数据提取任务。本文将详细介绍如何使用 BeautifulSoup 进行 HTML 文档的解析与操作。

2303_80346267的博客 3377

Python之BeautifulSoup库详解

BeautifulSoup是一个灵活方便的网页解析库,处理高效,能够自动的将输入文档转换为Unicode编码,输出文档转换为utf-8编码,且支持多种解析器。其最主要的功能是从网页抓取数据。

qq_33807380的博客 5098

Python爬虫:BeautifulSoup库

Beautiful Soup的简介 Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。官方解释如下: 1、Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。 2、Beautiful Soup自动将输...

不怕猫的耗子A 2万+

Python爬虫-BeautifulSoup解析

是一个用于解析 HTML 和 XML 文档的 Python 库。它提供了一种灵活且方便的方式来导航、搜索和修改树结构或标记文档。这个库非常适合网页抓取和数据提取任务,因为它允许你以非常直观的方式查询和操作文档内容。

weixin_53333436的博客 1716

python之BeautifulSoup库

python的BeautifulSoup解析库

qq_44690947的博客 4662
上一篇: python BeautifulSoup模块的安装
下一篇: Python读写mongo时区问题
CsharpGame
博客等级 码龄21年 11粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值