源码在最后面
目录
1.pycharm_bs4下载(超级简单方法)
2.bs4基本练习
2.1创建bs4本地html案例
2.2 根据标签名查找节点
2.3 bs4的find()函数方法_返回一个对象
2.4 bs4的find_all()函数方法_返回一个列表
2.4 bs4的select()函数方法_返回一个列表
2.5节点信息
2.6 练习源码
选项里面的网址:Simple Index
Title
- 张三
- 李四
- 王五
我爱学python
hello world
百度
hahhahahhahah
heheheheheh
增加查找条件title
增加查找条件class
如果想获取多个标签,那么需要在find_all的参数中添加列表数据
如果想获取前2个li标签,需要加上limit参数
可以通过.代表class_这种操作称为类选择器
可以通过#代表id_这种操作称为id选择器
属性选择器——查找到li标签中有id的标签
属性选择器——查找到li标签中有id为l2的标签_注意单引号里面的为双引号
层级选择器——后代选择器_找到div下面的li
层级选择器——子代选择器——某标签的第一级子标签
节点信息——获取节点内容
一定要记住obj是一个列表数据
from bs4 import BeautifulSoup
#解析本地文件 进行bs4的基础练习
#默认打开文件的格式为gbk,所以需要指定编码
soup = BeautifulSoup(open('bs4本地案例.html',encoding='utf-8'),'lxml')
#根据标签名查找节点
#找到第一个符合条件的数据
# print(soup.a)
#获取标签的属性和属性值
# print(soup.a.attrs)
#bs4的find()函数方法_返回第一个符合条件的数据
# print(soup.find('a'))
#bs4的find()函数方法_增加查找条件title
# print(soup.find('a',title='a2'))
#bs4的find()函数方法_增加查找条件class_
#注意class要加下划线
# print(soup.find('a',class_='a1'))
#bs4的find_all()函数方法_返回一个列表
#返回所有的a标签
#print(soup.find_all('a'))
#如果想获取多个标签,那么需要在find_all的参数中添加列表数据
# print(soup.find_all(['a','span']))
#如果想获取2个li标签,需要加上limit参数
# print(soup.find_all('li',limit=2))
#bs4的select()函数方法_返回一个列表
#返回所有的a标签
# print(soup.select('a'))
#可以通过.代表class_这种操作称为类选择器
# print(soup.select('.a1'))
#可以通过#代表id_这种操作称为id选择器
# print(soup.select('#l1'))
# 属性选择器_通过属性来选择对应的标签
# 查找到li标签中有id的标签
# print(soup.select('li[id]'))
# 查找到li标签中有id为l2的标签_注意单引号里面的为双引号
# print(soup.select('li[id="l2"]'))
#层级选择器
#后代选择器_找到div下面的li
# print(soup.select('div li'))
#子代选择器——某标签的第一级子标签
# print(soup.select('div>ul>li'))
# 找到a标签和li标签
# print(soup.select('a,li'))
#节点信息——获取节点内容
obj = soup.select('#d1')
#如果标签对象中 只有内容 那么string和get_text()都可以使用
# 如果在标签对象中 除了内容还有标签 那么string 就获取不到数据 而get_text()可以获取数据
# 所以在一般情况下推荐使用get_text()
# print(obj[0].string)
# print(obj[0].get_text())
#节点信息——获取节点的属性
obj = soup.select('#p1')
#name是标签的名字
# print(obj[0].name)
#将属性值作为一个字典返回
# print(obj[0].attrs)
print(obj[0].attrs.get('class'))
print(obj[0].get('class'))
print(obj[0]['class'])