BeautifulSoup-bs4的简单使用

# 简单使用:
#     说明:选择器 jquery
#导入from bs4 import BeautifulSoup
#使用方式:可以将一个html文档,转化为一个对象,
# 然后通过对象的方法或者属性去查找指定对象
#转化本地文件soup = BeautifulSoup(open("本地文件"),'lxml')
#转化网络文件soup = BeautifulSoup(open("字符串或者字节类型"),'lxml')

from bs4 import BeautifulSoup

#生成对象
soup = BeautifulSoup(open("xx.html"),'lxml')
#打印  这是一个对象
print(soup)
#1、根据签名查找
#可以查找这个对象的所有HTML标签
print(soup.a)#<a href=""...>   a标签
print(soup.div) #div 标签
#2、获取标签中的属性 比如<a href=""...> 中有href和内容两部分属性
#<a href="http://www.baudu.com/meinv.jpg" title="" target="" >这里是内容</a>
print(soup.a['href'])
print(soup.a['title'])
print(soup.a['target'])
print(soup.a['attrs'])#找出所有属性和值并返回一个属性字典
#3、获取内容
#<a href="http://www.baudu.com/meinv.jpg" title="" target="" >这里是内容</a>
#以下三个都可以
print(soup.a.string)
print(soup.a.text)
print(soup.a.get_text())
#4、获取一个div中的内容  如下  来区别以上三个方法的不同
# <div>
#     甄姬
#     <p>百里守约</p>
#     <p>李白</p>
#     太乙真人
# </div>
print(soup.a.string)#只能获取标签里面只有文本的情况 标签里有别的标签就获取不到了 结果为None
print(soup.a.text)#这个方法里面有标签也可以获取所有文本内容
print(soup.a.get_text())#这个方法里面有标签也可以  和上一个效果一样
#5、soup.find('a')
print(soup.find("a"))#找到第一个符合要求的a
print(soup.find("a"),title="限制")#通过第二个参数来限制
print(soup.find("a"),alt="限制")
print(soup.find("a"),class_="限制")#class是关键字不能用,但是可以用class_
print(soup.find("a"),id="限制")

#如果有重复的 需要精确查找 自己定义限定块 再查找 代码如下
#find方法不仅soup可以调用,普通div对象也能调用,
# 会去指定的div里面查找符合要求的节点
div = soup.find('div',class_="第一个限制块")
print(div.find('a',class_="第二个限制条件"))
#6、find_all()  和上面的find差不多
lt = soup.find_all('a')
print(lt,len(lt))#会产生一个列表 ,里面会有几个查找到的元素
div = soup.find_all('div',class_="第一个限制块")
print(div.find_all('a',class_="第二个限制条件"))
print(div.find_all('a','b')
print(div.find_all('a',limit=2)#找到所有取出前2个
#7、select 根据选择器选择指定的内容
#常见选择器:标签选择器、类选择器、id选择器、层级选择器、伪类选择器、属性选择器、组合选择器
#a  标签a
# .dudu 类选择器
# #lala id选择器
# 层级选择器举例  div .dudu #lala .meme .xixi    下面好多级
#建议层级选择器写法:div>p>a>.lala  这样只能找下面一级
print(soup.select(".tang>ul>li>a")[2])  #返回的是列表 这个是取第三个
print(soup.select("#feng")[0].text|['href'])#取查找到的第一个  。text并只找文本
#select选择器返回的永远是列表  需要通过下标提取指定的对象,然后获取属性和节点
作者:求知鱼

-------------------------------------------

个性签名:你有一个苹果,我有一个苹果,我们交换一下,一人还是只有一个苹果;你有一种思想,我有一种思想,我们交换一下,一个人就有两种思想。

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

独学而无友,则孤陋而寡闻,开源、分享、白嫖!

原文地址:https://www.cnblogs.com/Qiuzhiyu/p/12182927.html