BeautifulSoup

BeautifulSoup是一个解析HTML文件的一个库
from bs4 import BeautifulSoup#引用的bs4库导入的BeautifulSoup类
1:BeautifulSoup类的基本元素
(1)Tag 标签,最基本的信息组织单元,分别用<>和</>表明开头和结尾
(2)Name 标签的名字
(3)Attribute 标签的属性
(4)NavigableString 标签内非属性字符串
(5)Comment 标签内字符串的注释部分
2:最常使用的方法
soup = BeautifulSoup(demo ,"html.parser")
#demo 是BeautifulSoup解析的一个HTML的信息 后面的参数是一个解析器
解析器的其他形式(不同的解析器需要安装不同的包) 
lxml         pip install lxml
xml         pip install lxml
html5lib     pip install html5lib
例如: 
import requests
r = requests.get("http://python123.io/ws/demo.html")
print(r.text)
demo = r.text
soup = BeautifulSoup(demo ,"html.parser")  
3:标签树的元素 
<p class = "title"> ... </p>
 p为标签的名字 title是属性
#看一下soup的开头 页面左上方的信息
print(soup.title)
#获得 .a标签 链接标签的内容 如果有多个a标签返回第一个
tag = soup.a
print(tag)
#看一下a的父标签的名字是什么 也就是 什么标签包含了a标签
print(soup.a.parent.name)
#再看一下 a的爷爷辈的标签
print(soup.a.parent.parent.name)
#标签的属性信息
print(tag.attrs)
#获得class属性的值
print(tag.attrs['class'])
#获得标签的链接属性
print(tag.attrs['href'])
4: 基于bs4库的HTML遍历方法
(1)标签树的下行遍历
.contents 子节点的列表,将标签的所有儿子节点存入列表
.children 子节点的迭代类型,
.descendants 子孙节点的迭代类型,包含所有的子孙节点,用于遍历循环
#获得头标签
print(soup.head)
获得头标签的儿子节点
print(soup.head.contents)
打印body标签的儿子节点
print(soup.body.contents)
因为soup.body.contents返回的是list类型,可以查看儿子标签的数量
len(soup.body.contents)
也可以单独的访问某一标签,通过下标
print(soup.body.contents[1])
(2)标签树的上行遍历
parent 节点的父亲标签
parents 节点先辈标签的迭代类型,用于循环遍历先辈节点
for parent in soup.a.parents:
    if parent is None:
        print(parent)
    else:
        print(parent.name)
5:基于bs4库的HTML格式的输出
prittify()#可以再每一个标签后面增加换行符,能够更好地输出
查找a标签 并打印href属性
for link in soup.find_all('a'):
    print(link.get('href'))
<>.find_all(name, attrs, recursive,?string,?**kwargs)
? name?:?对标签名称的检索字符串
? attrs:?对标签属性值的检索字符串,可标注属性检索
? recursive:?是否对子孙全部检索,默认True
? string:?<>…</>中字符串区域的检索字符串
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值