课堂笔记-爬虫beautifulsoup模块
课堂笔记
1. bs4简介
1.1 基本概念
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的网页信息提取库
1.2 源码分析
• github下载源码
• 安装
• pip install lxml
• pip install bs4
2. bs4的使用
2.1 快速开始
html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""# 获取bs对象
bs = BeautifulSoup(html_doc,'lxml')
# 打印文档内容(把我们的标签更加规范的打印)print(bs.prettify())
print(bs.title) # 获取title标签内容 <title>The Dormouse's story</title>
print(bs.title.name) # 获取title标签名称 title
print(bs.title.string) # title标签里面的文本内容 The Dormouse's story
print(bs.p) # 获取p段落
2.2 bs4的对象种类
• tag : 标签
• NavigableString : 可导航的字符串
• BeautifulSoup : bs对象
• Comment : 注释
3. 遍历树 遍历子节点
bs里面有三种情况,第一个是遍历,第二个是查找,第三个是修改
3.1 contents children descendants
• contents 返回的是一个列表
• children 返回的是一个迭代器通过这个迭代器可以进行迭代
• descendants 返回的是一个生成器遍历子子孙孙
3.2 .string .strings .stripped strings
• string获取标签里面的内容
• strings 返回是一个生成器对象用过来获取多个标签内容
• stripped strings 和strings基本一致 但是它可以把多余的空格去掉
4. 遍历树 遍历父节点
parent 和 parents
• parent直接获得父节点
• parents获取所有的父节点
5. 遍历树 遍历兄弟结点
• next_sibling 下一个兄弟结点
• previous_sibling 上一个兄弟结点
• next_siblings 下一个所有兄弟结点
• previous_siblings上一个所有兄弟结点
6. 搜索树
• 字符串过滤器
• 正则表达式过滤器
我们用正则表达式里面compile方法编译一个正则表达式传给 find 或者 findall这个方法可以实现一个正则表达式的一个过滤器的搜索
• 列表过滤器
• True过滤器
• 方法过滤器
7. find_all() 和 find()
7.1 find_all()
• find_all()方法以列表形式返回所有的搜索到的标签数据
• find()方法返回搜索到的第一条数据
• find_all()方法参数
def find_all(self, name=None, attrs={}, recursive=True, text=None,
limit=None, **kwargs):
• name : tag名称
• attr : 标签的属性
• recursive : 是否递归搜索
• text : 文本内容
• limli : 限制返回条数
• kwargs : 关键字参数
7.2 find_parents() find_parent() find_next_siblings() find_next_sibling()
• find_parents() 搜索所有父亲
• find_parrent() 搜索单个父亲
• find_next_siblings()搜索所有兄弟
• find_next_sibling()搜索单个兄弟
7.3 find_previous_siblings() find_previous_sibling find_all_next() find_next()
• find_previous_siblings() 往上搜索所有兄弟
• find_previous_sibling() 往上搜索单个兄弟
• find_all_next() 往下搜索所有元素
• find_next()往下查找单个元素
8. 修改文档树
• 修改tag的名称和属性
• 修改string 属性赋值,就相当于用当前的内容替代了原来的内容
• append() 像tag中添加内容,就好像Python的列表的 .append() 方法
• decompose() 修改删除段落,对于一些没有必要的文章段落我们可以给他删除掉
课堂笔记-爬虫beautifulsoup模块相关推荐
- Nodejs课堂笔记02
第3天课堂笔记 ##1. 知识点 模块系统 核心模块 1. 文件操作的fs 2. http服务的http 3. url 路径操作模块 4. path 路劲处理模块 5. os 操作系统模块 第三方模块 ...
- beautifulsoup获取属性_Python爬虫常用模块:BeautifulSoup
BeautifulSoup用途 BeautifulSoup 借助网页的结构和属性等特性来解析网页,可以用它来方便地从网页中提取所需信息. BeautifulSoup自动将输入文档转换为Unicode编 ...
- 【爬虫剑谱】三卷3章 拾遗篇-有关于bs4库中的BeautifulSoup模块使用小结
关于bs4库中的BeautifulSoup模块在实战后的快速上手小结 一.BeautifulSoup 模块 1.将 Beautiful 对象实例化的两种方法 (1)将本地 HTML 文档转为 Beau ...
- python爬虫之使用BeautifulSoup模块抓取500彩票网竞彩足球赛果及赔率
目录 前言 分析思路 数据储存 代码 结果展示 结语 前言 竞彩足球是目前比较受欢迎的一种体彩彩种,玩法较为灵活多样,赔率可观,今天就来记录一下如何抓取竞彩足球的开奖信息和赔率. 分析思路 我使用的网 ...
- Requests 与 BeautifulSoup 模块
一.Requests库 参考 :http://www.python-requests.org/en/master/user/quickstart/#make-a-request Requests是一个 ...
- AI英特尔杯公开课:2019.06.27在线直播《研究生人工智能创新大赛—AI赋能,创新引领》课堂笔记和感悟(二)
AI英特尔杯公开课:2019.06.27在线直播<研究生人工智能创新大赛-AI赋能,创新引领>课堂笔记和感悟(二) 导读 讲解总体不错,知识点比较基础,适合入门,各种主流框架都有 ...
- AI英特尔杯公开课:2019.06.27在线直播《研究生人工智能创新大赛—AI赋能,创新引领》课堂笔记和感悟(一)
AI英特尔杯公开课:2019.06.27在线直播<研究生人工智能创新大赛-AI赋能,创新引领>课堂笔记和感悟(一) 导读 讲解总体不错,知识点比较基础,适合入门,各种主流框架都有 ...
- AI公开课:19.05.29 浣军-百度大数据实验室主任《AutoDL 自动化深度学习建模的算法和应用》课堂笔记以及个人感悟
AI公开课:19.05.29 浣军 百度大数据实验室主任<AutoDL 自动化深度学习建模的算法和应用>课堂笔记以及个人感悟 导读 浣军博士,汉族,1975年出生于江苏苏州, ...
- [python爬虫] BeautifulSoup和Selenium简单爬取知网信息测试
作者最近在研究复杂网络和知识图谱内容,准备爬取知网论文相关信息进行分析,包括标题.摘要.出版社.年份.下载数和被引用数.作者信息等.但是在爬取知网论文时,遇到问题如下: 1.爬取内容总为空,其原因 ...
- python3 beautifulsoup 模块详解_关于beautifulsoup模块的详细介绍
这篇文章主要给大家介绍了python中 Beautiful Soup 模块的搜索方法函数. 方法不同类型的过滤参数能够进行不同的过滤,得到想要的结果.文中介绍的非常详细,对大家具有一定的参考价值,需要 ...
最新文章
- matlab中find函数使用
- 面试题编程题06-python 输入一个字符串,反转输出
- c# asp.net Pdf 转换图片 在线预览 发布到iis中问题 最终解决篇—_—!
- Spring Boot 入门(五):集成 AOP 进行日志管理
- 最简单的方式实现一棵二叉树
- 文件管理系统_文件管理系统
- Java 必须掌握的 12 种 Spring 常用注解
- scala的数值类型(三)
- Mysql 简介和创建新的数据库
- 如何优雅地将Markdon格式文件md转为pdf?(使用typora)
- docker 网络配置_Kafka的AWS Docker网络设置
- stm32f10x系列.s汇编启动文件
- 如何解决Mac启动盘已满的问题?MacBooster帮你清理20种垃圾文件!
- 代写python assignment经常用到的代码语法分享!
- 【Struts1】--beanutils
- VS2010 中文版本
- LoadLibraryEx(DONT_RESOLVE_DLL_REFERENCES)的缺陷
- 外媒预测2015年十大最热门工作
- 华硕笔记本升级固态SSD过程
- PyTorch 和 TensorFlow的区别