python3个人爬虫之:BeautifulSoup学习心得
2018-03-01 17:22
288 查看
一 Beautiful Soup的介绍
官网介绍:Beautiful Soup是一个可以从HTML或者XML文件中提取数据的Python库,能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式,Beautiful Soup 会帮你节省数小时甚至数天的工作时间。
简而言之:就是一种强大的解析工具,帮助我们从网页中提取数据时提高效率。
【tips】: BeautifulSoup自动将输入文档转换为Unicode编码, 输出文档转换为utf-8编码。
二 安装
推荐使用pip来安装:
pip install beautifulsoup4
验证是否安装成功(在解释器导入模块不报错即安装成功):
【tips】: 这里虽然安装的是beautifulsoup4这个包,但是在引用的时候是引入bs4,因为这个包源代码本身的库文件夹名称就是 bs4 。
三 Beautiful Soup 的解析器比较
四 基本使用
1. demo演示
2. BeautifulSoup类的几种基本元素
3. 标签选择器
3.1 选择元素
3.2 获取子节点和子孙节点
3.3 获取父节点和祖先节点
要获取某个节点元素的父节点,可以调用parent属性
想要获取所有的祖先节点,可以调用parents属性
3.4 获取兄弟节点
要获取某个节点元素的兄弟节点,可以调用next_sibling 和 previous_sibling属性 --> 分别返回所有前面和后面的兄弟节点的生成器。
4 标准选择器
BeautifulSoup提供了一些查询的方法如find_all(), find()等方法,可以调用方法传入相应的参数灵活查询。
find_all(name, attrs, recursive, string, **kwargs) --> 返回一个list
find(name, attrs, recursive, string, **kwargs) --> 返回的是单个元素
5 CSS选择器
使用CSS选择器,只需要调用select()方法,传入相应的CSS选择器即可,css用法可以查看W3school CSS选择器参考手册。
6 获取属性和文本
获取属性:<tag>["属性名称"] 或者 <tag>.attrs["属性名称"]
获取文本: <tag>.string 或者 <tag>.get_text() 或者 <tag>.text
五 总结
1. 推荐使用lxml解析库, 必要时使用html.parser
2. 标签选择刷选功能弱但是速度快, 提取数据时可考虑提取单个的标签
3. 建议使用find(), find_all() 查询匹配单个结果或者多个结果
4. 如果对CSS选择器熟悉的话可以使用select()选择法
5. 记住常用提取属性和文本内容的方法(提取数据主要用的方法)
官网介绍:Beautiful Soup是一个可以从HTML或者XML文件中提取数据的Python库,能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式,Beautiful Soup 会帮你节省数小时甚至数天的工作时间。
简而言之:就是一种强大的解析工具,帮助我们从网页中提取数据时提高效率。
【tips】: BeautifulSoup自动将输入文档转换为Unicode编码, 输出文档转换为utf-8编码。
二 安装
推荐使用pip来安装:
pip install beautifulsoup4
验证是否安装成功(在解释器导入模块不报错即安装成功):
【tips】: 这里虽然安装的是beautifulsoup4这个包,但是在引用的时候是引入bs4,因为这个包源代码本身的库文件夹名称就是 bs4 。
三 Beautiful Soup 的解析器比较
解析器 | 使用方法 | 优势 | 劣势 |
---|---|---|---|
Python标准库 | BeautifulSoup(markup, "html.parser") | 内置标准库,速度适中,文档容错能力强 | 旧版本中文档容错能力差 |
lxml Html解析器 | BeautifulSoup(markup, "lxml") | 速度快,文档容错能力强 | 需要安装C语言库 |
lxml XML解析器 | BeautifulSoup(markup, "xml") | 速度快,唯一支持XML的解析器 | 需要啊安装C语言库 |
html5lib解析器 | BeautifulSoup(markup, "html5lib") | 最好的容错性,以浏览器的方式解析文档,生成HTML5格式的文档 | 速度慢,不依赖外部扩展 |
1. demo演示
2. BeautifulSoup类的几种基本元素
基本元素 | 说明 |
---|---|
Tag | 标签,最基本的信息组织单元 |
Name | 标签的名字, <p>...</p>的名字是“p”, 使用格式: <tag>.name |
Attributes | 标签的属性, 字典形式组织,使用格式: <tag>.attrs |
NavigableString | 标签内非属性字符串, <>...</>中字符串,使用格式:<tag>.string |
Comment | 标签内字符串的注释部分,一种特殊的Comment类型 |
3.1 选择元素
3.2 获取子节点和子孙节点
3.3 获取父节点和祖先节点
要获取某个节点元素的父节点,可以调用parent属性
想要获取所有的祖先节点,可以调用parents属性
3.4 获取兄弟节点
要获取某个节点元素的兄弟节点,可以调用next_sibling 和 previous_sibling属性 --> 分别返回所有前面和后面的兄弟节点的生成器。
4 标准选择器
BeautifulSoup提供了一些查询的方法如find_all(), find()等方法,可以调用方法传入相应的参数灵活查询。
find_all(name, attrs, recursive, string, **kwargs) --> 返回一个list
find(name, attrs, recursive, string, **kwargs) --> 返回的是单个元素
5 CSS选择器
使用CSS选择器,只需要调用select()方法,传入相应的CSS选择器即可,css用法可以查看W3school CSS选择器参考手册。
6 获取属性和文本
获取属性:<tag>["属性名称"] 或者 <tag>.attrs["属性名称"]
获取文本: <tag>.string 或者 <tag>.get_text() 或者 <tag>.text
五 总结
1. 推荐使用lxml解析库, 必要时使用html.parser
2. 标签选择刷选功能弱但是速度快, 提取数据时可考虑提取单个的标签
3. 建议使用find(), find_all() 查询匹配单个结果或者多个结果
4. 如果对CSS选择器熟悉的话可以使用select()选择法
5. 记住常用提取属性和文本内容的方法(提取数据主要用的方法)
相关文章推荐
- Python爬虫初步个人学习及心得
- Python爬虫小实践:使用BeautifulSoup+Request爬取CSDN博客的个人基本信息
- Python爬虫包 BeautifulSoup 学习(十一) CSS 选择器
- Python爬虫学习心得
- python爬虫Requests库:学习心得
- Python爬虫学习--WIN10下定时获取CSDN个人的访问量并保存到文件中2018/03/05
- Python爬虫包 BeautifulSoup 学习(四) bs基本对象与函数
- Python爬虫包 BeautifulSoup 学习(六) 递归抓取
- python爬虫【记录】BeautifulSoup 的用法遍历学习
- 【Python3.6爬虫学习记录】(二)使用BeautifulSoup爬取简单静态网页文章
- 【爬虫学习】BeautifulSoup 学习心得
- Python爬虫学习---------使用beautifulSoup4爬取名言网
- python爬虫——beautifulsoup4使用学习
- python库学习笔记——爬虫常用的BeautifulSoup的介绍
- Python爬虫的小小学习心得
- python爬虫----小白学习心得
- Python爬虫小白学习心得(一
- Python爬虫包 BeautifulSoup 学习(三) 实例
- Python爬虫包 BeautifulSoup 学习(一) 简介与安装
- Python爬虫包 BeautifulSoup 学习(九) 正则表达式与Lambda表达式