Python使用Beautiful Soup

Beautiful Soup 是Python的一个HTML或XML的解析库。

他提供一个简单的、Python式的函数来处理导航、搜索、修改分析数等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

Beautiful Soup 自动将输入文档转化为Unicode编码,输出文档转化为utf-8编码。不需要考虑编码方式,除非文档没有指定一个编码方式,这时仅仅需要说明一下原始的编码方式就可以了。

Beautiful Soup 安装

pip3 install beautifulsoup4

导入 bs4 库

from bs4 import BeautifulSoup

Beautiful Soup 支持 Python 标准库中的 HTML 解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python 默认的解析器,lxml 解析器更加强大,速度更快,推荐安装。

安装lxml解析器

pip3 install lxml

安装html5lib解析器

pip3 install html5lib

解析器使用方法

测试用例:

<style type="text/css">h1 {color:red} p {color:blue}</style><div>hello</div>
  • 使用Python 标准库的HTML解析器
soup = BeautifulSoup(doc, “html.parser”)

输出结果:

<style type="text/css">h1 {color:red} p {color:blue}</style><div>hello</div>
  • 使用lxml HTML解析器
soup = BeautifulSoup(doc, “lxml”)

输出结果:

<html><head><style type="text/css">h1 {color:red} p {color:blue}</style></head><body><div>hello</div></body></html>
  • 使用lxml XML解析器
soup = BeautifulSoup(doc, “lxml”)

输出结果:

<?xml version="1.0" encoding="utf-8"?>
<style type="text/css">h1 {color:red} p {color:blue}</style>
  •  使用html5lib HTML解析器
soup = BeautifulSoup(doc, “html5lib”)

输出结果:

<html><head><style type="text/css">h1 {color:red} p {color:blue}</style></head><body><div>hello</div></body></html>

常用方法

# 按照标准缩进格式输出
print(soup.prettify())

# 将HTML文档中的所有标签清除,返回一个只包含文字的字符串
print(soup.get_text())
# 或者
print(soup.text)

# 获取title标签
tag = soup.title
# 获取body标签
tag = soup.body

# 获取tag类型
print(type(tag))
# 获取标签名称
print(tag.name)
# 获取标签属性
print(tag.attrs)
# 单独获取某个属性
print(tag.attrs["lang"])
# 或者
print(tag["lang"])
# 获取标签文字
print(tag.string)

# 返回第一个div元素
divtag = soup.find("div")
# 返回第一个class为article的div元素
divtag = soup.find('div', attrs={'class', 'article'})
# 返回第一个id为article的div元素
divtag = soup.find('div', id='article')

# 搜索当前tag的所有tag子节点,并判断是否符合给定的条件
# 返回结果是一个数组,可以包含多个元素
divlst = soup.find_all('div')

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值