Beautiful Soup4语法讲解使用

阅读: 评论:0

Beautiful Soup4语法讲解使用

Beautiful Soup4语法讲解使用

Beautiful Soup4提取HTML内容,一般要经过两步:首先处理源代码生成BeautifulSoup对象。然后使用find_all()或者find()来查找内容。

目录

页面示例

1.解析源代码

2.查找内容


页面示例

打开BS4练习页面,网页的源代码如图所示,直接使用requests获取源代码。

1.解析源代码

读取文件内容

def mo_ni_html(file_name):""" 模拟获取网页 """with open(file_name, 'r', encoding='utf-8') as f:detail = f.readlines()content = ''content = content.join(detail)return content

解析源代码生成BeautifulSoup对象,使用以下代码:

soup = BeautifulSoup('网页源代码', '解析器')

这里的“解析器”,可以使用html.parser:

soup = BeautifulSoup(html, 'html.parser')

如果安装了lxml,还可以使用lxml:

soup = BeautifulSoup(html, 'lxml')

2.查找内容

查找内容的基本流程和使用XPath非常相似。

首先要找到包含特殊属性值的标签,并使用这个标签来寻找内容。

假设需要获取“列表”,由于这个信息所在<div>标签的class属性的值为“news-title”,

这个值本身就很特殊,因此可以直接通过这个值来进行定位,如图所示。

运行结果如上图所示。

由于HTML中的class属性与Python的class关键字相同,因此为了不产生冲突,

BS4规定,如果遇到要查询class的情况,使用“class_”来代替。

在第20行的查询HTML代码中,class属性的属性值为“news-title”的标签,

得到find()方法返回的BeautifulSoup Tag对象。

在第22行中,直接通过.string属性就可以读出标签中的文字信息。

那如果要获取“图集1”“图集2”和“图集3”,又应该怎么办呢?使用先抓大再抓小:

videos_listb = soup.find(class_='videos-listb')
ul_h2s = videos_listb.find_all('h2')
for item in ul_h2s:print(item.string)

运行结果如下:

首先根据标签<div class="videos-listb">查找到有用的内容,

然后在这个内容的基础上继续查找<h2>标签下面的内容。

这里用到了find()方法和find_all()方法。

find()与find_all()的不同点如下。

· find_all()返回的是BeautifulSoup Tag对象组成的列表,

如果没有找到任何满足要求的标签,就会返回空列表。

· find()返回的是一个BeautifulSoup Tag对象,如果有多个符合条件的HTML标签,

则返回第1个对象,如果找不到就会返回None。

find_all()与find()的参数完全相同,以find_all()为例来说明。

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

· name就是HTML的标签名,类似于body、div、ul、li。

· attrs参数的值是一个字典,字典的Key是属性名,字典的Value是属性值,例如

attrs={'class': 'videos-listb'}

这种写法,class就不需要加下划线。

· recursive的值为True或者False,当它为False的时候,BS4不会搜索子标签。

· text可以是一个字符串或者是正则表达式,用于搜索标签里面的文本信息,

因此,要寻找所有以“图集”开头的信息,还可以使用下面的写法:

content = soup.find_all(text=repile('图集'))for item in content:print(item.string)

运算结果如图所示:

 

使用re时要注意,记得引入三方库re

import re

 除了获取标签里面的文本外,BS4也可以获取标签里面的属性值。

如果想获取某个属性值,可以将BeautifulSoup Tag对象看成字典,将属性名当作Key,

如图所示:

本文发布于:2024-01-28 13:45:43,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064207517835.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:Beautiful Year
标签:语法   Beautiful
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23