python网络爬虫开发:BeautifulSoup网页解析库

2022-08-0711:06:05云计算与物联网Comments2,474 views字数 1972阅读模式

BeautifulSoup在Python中是一个比较受欢迎的第三方库,它是一款比较优秀的网页解析库,里面提供了很多接口帮助我们来处理导航、搜索、修改分析树,它的查找提取功能非常好用,能够节省程序员大量的时间。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

BeautifulSoup最新版为BeautifulSoup4,我们可以通过pip来安装,也可以在Pycharm中直接找到进行下载。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

python网络爬虫开发:BeautifulSoup网页解析库文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

Pip安装过程如图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

python网络爬虫开发:BeautifulSoup网页解析库文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

1. BeautifulSoup的使用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

我们先通过一段代码来测试使用一下它的用法:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

1
2
3
4
5
6
7
8
9
10
11
12
Dot = """
<html><head><title>dotcpp</title></head>
<body>
<p><b>c语言网</b></p>
<p>编程网站
<a href="https://www.dotcpp.com/" id="link1">home</a>,
<a href="https://blog.dotcpp.com/" id="link2">blog</a>
<a href="https://www.dotcpp.com/oj/problemset.html" id="link3">oj</a></p>
"""
from bs4 import BeautifulSoup
soup = BeautifulSoup(dot, "html.parser")
print(soup.prettify())

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

python网络爬虫开发:BeautifulSoup网页解析库文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

我们可以通过这种方式来解析网页,我们还可以通过它来进一步获取更精确的信息,例如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

1
2
3
4
5
6
7
8
9
10
11
soup = BeautifulSoup(html,"html.parser"
print(suop.prettify())
print(suop.title)  # 获取title标签的所有内容
print(suop.title.name) # 获取title标签的名字
print(suop.title.string) # 获取title标签的文本内容
print(suop.head) # 获取head标签的所有内容
print(suop.div)# 获取第一个div标签中的所有内容
print(suop.div["id"]) # 获取第一个div标签的id的值
print(suop.a)  # 获取第一个a标签中的所有内容
print(suop.find_all("a")) # 获取所有的a标签,并遍历打印a标签中的href的值
print(suop.find(id = "dot")) # 获取id="dot"

输出结果即为对应的信息,注意解析html网页的解析方式,我们一直采用了Python中自带的html.parser,我们还可以选择lxml HTML、lxml XML和html5lib等解析器,他们分别有着优劣点,如果系统中有C语言库的可以选择下载前两者解析器,如果不想再下载过多插件的也可以直接选择我们上面用到的即可,我们在使用BeautifulSoup的时候一定要注意的就是网页解析,正确的解析方式十分重要。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

2. BeautifulSoup4的四个对象文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

Beautiful Suop把网页中的信息转换成一个复杂的树形结构,通过子树分解为四个对象,分别是Tag、NavigableSting、BeautifulSoup、Comment。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

1) Tag文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

Tag与它的对应的汉语一个意思,对应的就是HTML中的标签,像我们在上面使用到的:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

1
2
print(suop.title) # 获取title标签的名称
print(suop.a) # 获取所有的a标签中的所有内容

他们都属于标签信息,我们可以通过标签名来获取到这些标签中的内容,有一点需要注意的是在查找的时候,对应的是符合要求的第一个标签,Tag有两个属性,分别是name和attrs,name也就是标签的名字,attrs对应class、id等信息。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

2) NavigableSting文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

NavigableSting对应的是标签内部的文字,例如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

1
print(suop.title.string) # 获取标签的所有内容

通过这种方式就可以直接获取到标签内部的文字。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

3) BeautifulSoup文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

BeautifulSoup对象对应的是文档中的内容,它类似于一个特殊的标签,我们可以获取到它的类型、名称和属性,也就是上面我们所使用到的:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

1
soup = BeautifulSoup(html,"html.parser")

4) Comment文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

Comment对象是一个特殊的NavigableSting对象,它输出的内容没有注释符号,如果不加以处理会影响我们对文档的解析,因为这种方式会忽略掉文档的注释,文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

因此注释中的内容会以代码格式被解析出来,进而影响我们的后续操作,所有我们 一般会采用.string来输出内容。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26705.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/yunda/26705.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定