栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

bs4中BeautifulSoup基本用法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

bs4中BeautifulSoup基本用法

一.安装bs4模块

通过终端界面输入pip insert bs4来进行安装

二.准备工作

为了方便演示,这里提供html测试界面的代码,请将新建的html文件命名为:

测试-Beautifulsoup.html




    
    Title


    
            
  • 张三
  • 李四
  • 王五
  • 测试1 测试测试
测试2 测试3 测试4

测试5

首先在新建的py文件中导入BeautifulSoup模块

from bs4 import BeautifulSoup

然后将“测试-Beautifulsoup.html”打开,通过lxml内核解析,并将返回值赋给soup

soup=BeautifulSoup(open('测试-Beautifulsoup.html', encoding='utf-8'), 'lxml')#BeautifulSoup(open(文件名),'lxml'),lxml为使用的内核

这里要注意

BeautifulSoup默认打开的文件编码格式是gbk,所以要open(文件名,encoding='utf-8')
三.基本命令

这里就直接上代码了,每条都有注释、

1.find
print(soup.find('a'))#找到的是第一个a标签
print(soup.find('a',title='a1'))#找到的是第一个a标签中带title属性且title属性为a1的
# print(soup.find('a',class='a2'))错误,无法查找是因为class在python中也是一个关键字
print(soup.find('a',class_='a2'))#找到的是第一个a标签中带class属性且class属性为a1的
2.find_all
print(soup.find_all('a'))#找到的是所有的a标签,存储为列表形式
print(soup.find_all(['a','span']))#找到的是所有的a和span标签,查找多个标签时,将其存在一个[]内
print(soup.find_all('li',limit=2))#找到的是前两个li标签,limit=多少就取多少项
3.select
print(soup.select('a'))#找到的是所有的a标签,存储为列表形式
print(soup.select('.a2'))#找到class内容为a2的标签,.代表class
print(soup.select('#a3'))#找到id内容为a3的标签,#代表id
print(soup.select('li,a'))#找到所有li标签和a标签
#属性选择器——————通过属性寻找对应的标签
print(soup.select('li[id]'))#查找到有id的li标签,存储为列表
print(soup.select('li[id="a4"]'))#查找到id属性=a4的li标签
#层级选择器——————通过层级关系寻找对应的标签
#(1)后代选择器(类似于选择父辈可以直接查询孙辈)
print(soup.select('div li'))#查询div下所有li标签,以列表形式存储,' '代表li是div的后代
#(2)子代选择器(类似于选择父辈只能查询子辈,不能跳级查询孙辈)
print(soup.select('div>ul>li'))#查询div下ul下的所有li标签,以列表形式存储,'>'代表li是ul的子代,ul是div的子代
4.节点相关
#(1)获取节点内容
obj=soup.select('#a5')#找到id内容为a5的标签,存储为列表类型
#print(obj.get_text())#通过.get_text()来获取文本内容
#上面这条直接调用会报错,是因为obj为一个列表,所以要取出列表中的字符串,才能正常运行
obj1=obj[0]
print(obj1.get_text())#通过.get_text()来获取文本内容
#如果标签对象中只有内容,那么string和get_text()都能获取到内容
#如果标签对象中除了内容还有对象,那么只有get_text()能获取到内容
print(obj1.string)

#(2)节点的属性
obj=soup.select('#p1')#找到id内容为p1的标签,存储为列表类型
obj1=obj[0]
print(obj1.name)#name返回的是标签的名字
print(obj1.attrs)#attrs是将属性值以字典形式返回

#(3)获取节点的属性
obj=soup.select('#p1')#找到id内容为p1的标签,存储为列表类型
obj1=obj[0]
print(obj1.attrs.get('class'))#因为attrs返回的是字典类型,可以用get方式
print(obj1.get['class'])
print(obj1['class'])
#以上三种方法都可以取到class的值

这些就是BeautifulSoup中的一些基本语法,下一篇将进行一个项目演示。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529796.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号