本篇文章是使用bs4中的BeautifulSoup和requests解析网页和获取数据👑🌟
🌟前言
为了更深入的学习爬虫,今天来了解下bs4的使用和实践,当然解析网页不止只有bs4的BeautifulSoup可以做到,还有xpath语法和正则表达式。本期是初步的了解BeautifulSoup模块的使用,欢迎初学者学习本期内容。
一、🍉bs4中的BeautifulSoup
BeautifulSoup库是Python编程语言中的一款第三方库,主要用于解析HTML和XML文档。这个库能够将复杂的HTML或XML数据转换为树形结构(即DOM树),让开发者能够以更简单的方式来遍历、搜索和操作这些结构化的数据。
bs4的四种解析方式
:
解析器 | 使用方法 | 优势 | 劣势 |
---|---|---|---|
python标准库 | soup = BeautifulSoup(htmlt, ‘html.parser’) | python内置标准库;执行速度适中 | python2.x或者python3.2x前的版本中文文档容错能力差 |
lxml HTML解析器 | soup = BeautifulSoup(html, ‘lxml’) | 速度快;文档容错能力强 | 需要安装c语言库 |
lxml XML解析器 | soup = BeautifulSoup(html, ‘xml’) | 速度快;唯一支持XML的解析器 | 需要安装c语言库 |
html5lib | soup = BeautifulSoup(html, ‘html5lib’) | 最好的容错性;以浏览器的方式解析文档;生成HTML5格式的文档;不依赖外部扩展库 | 速度慢 |
二、🍉bs4的语法
- 获取全部的单个标签:
soup.find_all('标签')
- 获取拥有指定属性的标签:
soup.find_all('标签',属性的键值对)
soup.find_all('标签',attrs={
键值对1,键值对2})
注意
:attrs是存储的是字典,里面可以包含html的多个属性
- 获取多个指定属性的标签:
soup.find_all('标签',属性的键值对1,属性的键值对2)
如果在获取时,出现python关键字与属性冲突时,在获取的时候添加一个下划线 ' _ '
,例如:
soup.find_all('div',class_='position')
- 获取标签属性值:
先锁定标签
alist=soup.find_all('a')
- 方法1:
通过下标方式提取
for a