'''如果将字符串单独保存为html文件,则使用谷歌浏览器打开后即为:
 
一文弄清Python网络爬虫解析库!内含多个实例讲解

文章插图
 
通过导入bs4库中的BeautifulSoup子类可以输入以下命令观察输出:
from bs4 import BeautifulSoup bs = BeautifulSoup(html,"html.parser") # 缩进格式print(bs.prettify()) # 获取title标签的所有内容print(bs.title) # 获取title标签的名称print(bs.title.name) # 获取title标签的文本内容print(bs.title.string) # 获取head标签的所有内容print(bs.head) # 获取第一个div标签中的所有内容print(bs.div) # 获取第一个div标签的id的值print(bs.div["id"]) # 获取第一个a标签中的所有内容print(bs.a) # 获取所有的a标签中的所有内容print(bs.find_all("a")) # 获取id="u1"print(bs.find(id="u1")) # 获取所有的a标签,并遍历打印a标签中的href的值for item in bs.find_all("a"):print(item.get("href")) # 获取所有的a标签,并遍历打印a标签的文本值for item in bs.find_all("a"):print(item.get_text())【一文弄清Python网络爬虫解析库!内含多个实例讲解】3.基本方法
BeautifulSoup4将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:
# [document] #bs 对象本身比较特殊,它的 name 即为 [document]print(bs.name) # head #对于其他内部标签,输出的值便为标签本身的名称print(bs.head.name) # 在这里,我们把 a 标签的所有属性打印输出了出来,得到的类型是一个字典 。print(bs.a.attrs) #还可以利用get方法,传入属性的名称,二者是等价的print(bs.a['class']) # 等价 bs.a.get('class')# 可以对这些属性和内容等等进行修改bs.a['class'] = "newClass"print(bs.a) # 还可以对这个属性进行删除del bs.a['class'] print(bs.a)print(bs.title.string) print(type(bs.title.string))print(type(bs.name)) print(bs.name) print(bs.attrs)print(bs.a)# 此时不能出现空格和换行符,a标签如下:# <a class="mnav" href=https://www.isolves.com/it/cxkf/yy/Python/2021-04-12/"http://news.baidu.com" name="tj_trnews">print(bs.a.string) # 新闻print(type(bs.a.string)) # 接下来具体讲解BeautifulSoup的使用方法 。我们可以通过BeautifulSoup遍历文档树:
# tag的.content 属性可以将tag的子节点以列表的方式输出print(bs.head.contents)# 用列表索引来获取它的某一个元素print(bs.head.contents[1])for child inbs.body.children:print(child)