python BeautifulSoup库的安装与使用
作者:雾霾王者 发布时间:2022-06-22 17:01:04
标签:python,BeautifulSoup
1.BeautifulSoup简介
BeautifulSoup4和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。
BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器,lxml 解析器更加强大,速度更快,推荐使用lxml 解析器。
Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
2.BeautifulSoup的安装
首先我们需要安装一个BeautifulSoup库。我安装的版本是python3。所以就可以直接在cmd下用pip3命令进行安装。
命令:
pip3 install beautifulsoup4
在安装好BeautifulSoup后,我们可以通过导入该库来判断是否安装成功。
命令:
>>> from bs4 import BeautifulSoup
回车后不报错,这说明我们已经将其安装成功。
3.BeautifulSoup常用功能
# beautiful soup 网页中提取信息的python库
# BeautifulSoup 对象表示的是一个文档的全部内容
# prettify() 按照标准的缩进格式的结构输出
# get_text() 会将HTML文档中的所有标签清除,返回一个只包含文字的字符串
from bs4 import BeautifulSoup
text='''
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
'''
# create 对象
bf=BeautifulSoup(text)
# 按照标准缩进格式输出
print(bf.prettify())
# 会将HTML文档中的所有标签清除,返回一个只包含文字的字符串
print(bf.get_text())
# Tag对象
# 标签 表示HTML中的一个个标签
# name
# attrs
tag=bf.title # 获取title标签
print(tag)
print(type(tag)) # tag类型
print(tag.name) # 标签名称
print(tag.attrs) #标签属性
print(tag.attrs["lang"]) #单独获取某个属性 方法1
print(bf.title["lang"]) #单独获取某个属性 方法2
# NavigableString tag.string
# 表示标签中的文字
print(tag.string)
print(type(tag.string)) # 查看数据类型
# Comment 注释部分
# 一个特殊类型的NavigableString对象
# 输出的内容不包括注释符号
string='''
<p><!-- 这是注释! --></p>
'''
sp=BeautifulSoup(string)
print(sp)
print(sp.p.string) # 去获取标签中是文字
# 两个常用函数
# find_all() 搜索当前tag的所有tag子节点,并判断是否符合给定的条件
# 返回结果是一个列,可以包含多个元素
print(soup.find_all('title'),end="\n-------\n")
#find() 直接返回第一个元素
print(soup.find("title"))
print(soup.find_all("title",lang="eng")) # 查找title标签 属性lang=eng
print(soup.find_all("title",{"lang":"eng"})) # 结果同上
print(soup.find_all(["title","price"])) #获取多个标签
print(soup.find_all("title",lang="eng")[0].get_text()) # 获取文本
# 三大常见节点
# 子节点 一个Tag可能包含多个字符串或其他的tag,这些都是这个tag的子节点
# 父节点 配个tag或字符串都有父节点:被包含在某个tag中
# 兄弟节点 平级的节点
end="\n-------\n"
print(soup.book,end) # 获取book节点信息
print(soup.book.contents,end) # 获取book下的所有子节点
print(soup.book.contents[1],end) # 获取book下的所有子节点中的第一个节点
print(soup.book.children,end) # children 生成迭代器
for child in soup.book.children:
print("===",child)
print(soup.title.parent,end)
print(soup.book.parent,end)
for parent in soup.title.parents: #注意parent和parents区别
print("===",parent.name)
print(soup.title.next_sibling,end) # 获取该节点的下一个兄弟节点
print(soup.title.previous_sibling,end) # 获取该节点的上一个兄弟节点
print(soup.title.next_siblings,end) # 获取该节点的全部兄弟节点
for i in soup.title.next_siblings:
print("===",i)
来源:https://www.cnblogs.com/zlc364624/p/12264070.html


猜你喜欢
- 前言数据清洗是一项复杂且繁琐(kubi)的工作,同时也是整个数据分析过程中最为重要的环节。有人说一个分析项目80%的时间都是在清洗数据,这听
- 八卦是种优良品质,特别是用在技术上时。来看几个Reset CSS的八卦问题吧:你知道世界上第一份reset.css在哪么?*&nb
- 刚刚上网搜了一下如何用python统计列表中不同元素的数量,发现很少,找了半天。我自己来写一种方法。代码如下list=[1,1,2,2,3]
- 什么是双端队列双端队列是与队列类似的有序集合。它有一前、一后两端,元素在其中保持自己的位置。与队列不同的是,双端队列对在哪一端添加和移除元素
- Python实现多进程间通信的方式有很多种,例如队列,管道等。但是这些方式只适用于多个进程都是源于同一个父进程的情况。如果多个进程不是源于同
- 在找工作的时候,我们会选择上网查询招聘的信息,或者是通过一些招聘会进行现场面试。但由于信息更新不及时,有一些岗位会出现下架的情况,如果我们不
- 本文实例讲述了JS笛卡尔积算法与多重数组笛卡尔积实现方法。分享给大家供大家参考,具体如下:js 笛卡尔积算法的实现代码,据对象或者数组生成笛
- Oracle TRIM函数是很常见的函数,下面对Oracle TRIM函数的语法作了详尽的阐述说明,希望可以让您对Oracle TRIM函数
- 介绍 itertools是python内置的模块,使用简单且功能强大,这里尝试汇
- 前言:不知道有多少同学跟我一样,最初接触编程的动机就是为了自己做个游戏玩?今天要给大家分享的是一个 pygame 写的“
- 在html里的每一个标签都有其自身的意义,而H标签作为标题标签,它的意义更是至关重要。对于H标签的用法特别是h1的用法一直是个争议的问题,也
- 业务场景由于项目需求,需要对相关类目进行多选,类目数据量又特别大,业务逻辑是使用懒加载方式加载各级类目数据,编辑时回显用户选择的类目。问题描
- 从最简单的Web浏览器的登录界面开始,登录界面如下:进行Web页面自动化测试,对页面上的元素进行定位和操作是核心。而操作又是以定位为前提的,
- 前言本文提供获取视频时长的python代码,精确到毫秒,一如既往的实用主义。环境依赖 ffmpeg环境安装,可以参考:window
- 本文实例讲述了Python3爬虫学习之应对网站反爬虫机制的方法。分享给大家供大家参考,具体如下:如何应对网站的反爬虫机制在访问某些网站的时候
- 前言在我们往数据库插入数据的时候,需要判断某个字段是否存在,如果存在则执行更新操作,如果不存在则执行插入操作,如果每次首先查询一次判断是否存
- 如何在php中判断一个网页请求是ajax请求还是普通请求?你可以通过传递参数的方法来实现,例如使用如下网址请求:/path/to/pkphp
- 简介简介:零代码的22个小游戏集合 作者:Grant Jenks版本:2.4.0安装:D:\>pip install fre
- 本文实例讲述了Python实现备份MySQL数据库的方法。分享给大家供大家参考,具体如下:#!/usr/bin/env python# -*
- 这篇文章讨论了Python的from <module> import *和from <package> import