我是靠谱客的博主 端庄薯片,最近开发中收集的这篇文章主要介绍Bs4简介Bs4简介,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Bs4简介

作用:

将复杂的HTML文档转换成一个树形结构,每个节点都是Python对象,所有对象可以归纳为5种:

1、Tag——利用标签,获取标签及其内容(多个重复标签,默认拿取第一个)
file = open("baidu.html", "rb")         # 打开一个html文件
html = file.read()
bs = BeautifulSoup(html, "html.parser")     # 实例化BeautifulSoup对象来解析网页,第一个参数是指定解析文件的类型,第二个参数是指定解析器

# 1、Tag——利用标签,获取标签及其内容(多个重复标签,默认拿取第一个)
print(bs.title)                # 指定标签,获取标签及其内容,返回类型为Tag


# 返回结果
<title>百度一下,你就知道</title>

原html文档中下标签为title中的信息:
在这里插入图片描述

2、NavigableString——指定标签获取标签后的字符串,返回类型为NavigableString
from bs4 import BeautifulSoup

file = open("baidu.html", "rb")         # 打开一个html文件
html = file.read()
bs = BeautifulSoup(html, "html.parser")     # 实例化BeautifulSoup对象来解析网页,第一个参数是指定解析文件的类型,第二个参数是指定解析器

# 2、NavigableString——指定标签获取标签后的字符串,返回类型为NavigableString
print(bs.title.string)


# 返回结果
百度一下,你就知道

原html文档中下标签为title下的字符串:
在这里插入图片描述

3、dict——指定标签获取标签后的属性,返回类型为dict(多个重复标签,默认拿取第一个)
from bs4 import BeautifulSoup

file = open("baidu.html", "rb")         # 打开一个html文件
html = file.read()
bs = BeautifulSoup(html, "html.parser")     # 实例化BeautifulSoup对象来解析网页,第一个参数是指定解析文件的类型,第二个参数是指定解析器

# 3、dict——指定标签获取标签后的属性,返回类型为dict(多个重复标签,默认拿取第一个)
print(bs.a.attrs)				


# 返回结果
{'href': 'http://news.baidu.com', 'target': '_blank', 'class': ['mnav', 'c-font-normal', 'c-color-t']}

原html文档中下第一个标签为a中的信息:
在这里插入图片描述

4、BeautifulSoup——获取整个文档信息,返回类型为BeautifulSoup
from bs4 import BeautifulSoup

file = open("baidu.html", "rb")         # 打开一个html文件
html = file.read()
bs = BeautifulSoup(html, "html.parser")     # 实例化BeautifulSoup对象来解析网页,第一个参数是指定解析文件的类型,第二个参数是指定解析器

# 4、BeautifulSoup——获取整个文档信息,返回类型为BeautifulSoup
print(bs)


# 返回结果
注:返回结果是整个html文档,由于文档内容过多在此不予显示
5、Comment——标签a后边的字符串中的注释信息,不会被返回,此返回类型是NavigableString中的一种为:Comment
from bs4 import BeautifulSoup

file = open("baidu.html", "rb")         # 打开一个html文件
html = file.read()
bs = BeautifulSoup(html, "html.parser")     # 实例化BeautifulSoup对象来解析网页,第一个参数是指定解析文件的类型,第二个参数是指定解析器

# 5、Comment——标签a后边的字符串中由注释信息,不会被返回,此返回类型是NavigableString中的一种为:Comment
print(bs.a.string)


# 返回结果
新闻

应用:

1、文档的遍历

from bs4 import BeautifulSoup

file = open("baidu.html", "rb")         # 打开一个html文件
html = file.read()
bs = BeautifulSoup(html, "html.parser")     # 实例化BeautifulSoup对象来解析网页,第一个参数是指定解析文件的类型,第二个参数是指定解析器

# 文档的遍历
print(bs.head.contents)             # 获取头部中的contents属性信息,返回类型为list
print(bs.head.contents[1])			# 返回list中的第二个元素

2、文档的搜索

1)find_all()查找所有

from bs4 import BeautifulSoup

file = open("baidu.html", "rb")          # 打开一个html文件
html = file.read()
bs = BeautifulSoup(html, "html.parser")  # 实例化BeautifulSoup对象来解析网页,第一个参数是指定解析文件的类型,第二个参数是指定解析器

# 1)find_all() 查找所有
t_list = bs.find_all("head")             # 获取所有相同标签(完全匹配)的内容(索引与内容必须完全相同),返回类型为list
print(t_list)

2)正则表达式搜索:使用search方法来匹配内容,搜索符合正则表达式规则的内容

from bs4 import BeautifulSoup
import  re

file = open("baidu.html", "rb")         # 打开一个html文件
html = file.read()
bs = BeautifulSoup(html, "html.parser")     # 实例化BeautifulSoup对象来解析网页,第一个参数是指定解析文件的类型,第二个参数是指定解析器

t_list = bs.find_all(re.compile("a"))       # 获取含索引内容的信息
print(t_list)
3)方法:传入一个函数(方法),根据函数的要求搜索
from bs4 import BeautifulSoup

file = open("baidu.html", "rb")          # 打开一个html文件
html = file.read()
bs = BeautifulSoup(html, "html.parser")  # 实例化BeautifulSoup对象来解析网页,第一个参数是指定解析文件的类型,第二个参数是指定解析器

def name_is_exists(tag):
    return tag.has_attr("name")
t_list = bs.find_all(name_is_exists)	 # 这里为什么不需传参数,目前不明白
4)kwargs,按参数搜索
from bs4 import BeautifulSoup

file = open("baidu.html", "rb")          # 打开一个html文件
html = file.read()
bs = BeautifulSoup(html, "html.parser")  # 实例化BeautifulSoup对象来解析网页,第一个参数是指定解析文件的类型,第二个参数是指定解析器

t_list = bs.find_all(id='head')                                 # 查找id为head中的所有内容,包括子内容
t_list = bs.find_all(href='http://news.baidu.com') # 查找href为http://news.baidu.com中所有内容,包括子内容
t_list = bs .find_all(class_=True)                 # 查找有class下的所有内容
t_list = bs.find_all(text="hao123")                # 返回text内容为指定内容的text
t_list = bs.find_all("a", limit=3)                 # 查找标签为a的内容,并只返回3条内容
5)css选择器
from bs4 import BeautifulSoup

file = open("baidu.html", "rb")          # 打开一个html文件
html = file.read()
bs = BeautifulSoup(html, "html.parser")  # 实例化BeautifulSoup对象来解析网页,第一个参数是指定解析文件的类型,第二个参数是指定解析器

# 5)css选择器
t_list = bs.select('title')             # 通过标签来查找
t_list = bs.select('. mnav')            # 通过类名来查找
t_list = bs.select("#u1")               # 通过id来查找
t_list = bs.select("a[class='bri']")    # 通过属性来查找(a标签下类名为bri的内容)
t_list = bs.select("head > title")      # 通过子标签来查找(head标签下的title标签后的内容)
t_list = bs.select(".mnav ~ .bri")      # 通过兄弟结点来查找

最后

以上就是端庄薯片为你收集整理的Bs4简介Bs4简介的全部内容,希望文章能够帮你解决Bs4简介Bs4简介所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(27)

评论列表共有 0 条评论

立即
投稿
返回
顶部