BeautifulSoup

# beautifulsoup是python的第三方库
# 和xpath作用一样,都是用来解析html数据
# 相比之下,xpath的速度更快一点
# xpath底层是c来实现的

from bs4 import BeautifulSoup

# BeautifulSoup里面需要两个参数
# 一个为open方法一个为固定写法'lxml'
# open方法里面需要两个参数
# 1.想要解析的数据
# 2.设置编码格式
bs = BeautifulSoup(open('index.html',encoding='utf-8'),'lxml')
print(bs)
print(type(bs))
#获取网购也当中的title标签
print(bs.title)
#获取head标签及head标签内部的所有的其他标签
print(bs.head)
#获取网页当中的第一个a标签
print(bs.a)
# 总结:bs.XX
# 获取所有XX当中的第一个XX以及第一个XX里面的内容
# bs:class 'bs4.BeautifulSoup
# bs指的是当前的整体
# dociment文档
# name在此指的是获取当前内容的标签名,bs为一个整体,而不是某一个具体的标签
print(bs.name)
#获取head的标签名
print(bs.head.name)
#获取title标签的标签名
print(bs.title.name)
# attribute属性
# 获取指定标签的所有属性
#如果没有做特别处理,bs.XX永远获取的是所有XX中的第一个XX
print(bs.html.attrs)
print(bs.a.attrs)
# KeyError只能从自己有的属性中找
print(bs.a['id'])
print(bs.a['href'])
# class和id不一样
# id必须是唯一的,一个标签只能有一个id
# class不是唯一的,不同标签可以拥有同一个class
# 同一个标签页可以拥有多个class
print(bs.a['class'])

print(bs.html['lang'])
# delete删除
print(bs.a)
del bs.a['id']
print(bs.a)
#获取指定标签的文本内容
print(bs.a.string)
# string获取的文本指的是本标签的文本
# 不包含子标签的文本
print(bs.div.string)

# 遍历-----------------------------
# contents能够获取指定标签下面的所有内容
print(bs.head.contents)
print(bs.body.contents)
# 获取所有内容当中指定索引的内容
print(bs.div.contents[3])

# parent 父级
# 获取指定标签的父级标签和父标签内部的所有标签
head = bs.title.parent
# tag标签  标记
print(head)

#找到所有a标签
res = bs.find_all('a')
print(res)
for value in res:
    print(value)

# id是唯一的  通过id来找  只能找到一个  所以用find
# class不是唯一的  通过class来找   可能找到多个
print(bs.find(id="jd"))
print(bs.find_all(class_='shopping'))
# 找到所有符合条件当中的第一个
print(bs.find(class_='shopping'))
print(bs.find_all(id='jd'))

#select选择--------------------------------------------
# 选择指定的标签
print(bs.select('title'))
#当选择对象有多个的时候,将获取所有的对象
print(bs.select('a'))
# 表示类名 #表示id
#.fitst     #first
print(bs.select('.first'))
print(bs.select('#jd'))
# print(bs.select('href'))
# print(bs.select('lang'))
# 找到一个类名为now的div标签
print(bs.select('p#one'))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值