课堂笔记

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模块相关推荐

  1. Nodejs课堂笔记02

    第3天课堂笔记 ##1. 知识点 模块系统 核心模块 1. 文件操作的fs 2. http服务的http 3. url 路径操作模块 4. path 路劲处理模块 5. os 操作系统模块 第三方模块 ...

  2. beautifulsoup获取属性_Python爬虫常用模块:BeautifulSoup

    BeautifulSoup用途 BeautifulSoup 借助网页的结构和属性等特性来解析网页,可以用它来方便地从网页中提取所需信息. BeautifulSoup自动将输入文档转换为Unicode编 ...

  3. 【爬虫剑谱】三卷3章 拾遗篇-有关于bs4库中的BeautifulSoup模块使用小结

    关于bs4库中的BeautifulSoup模块在实战后的快速上手小结 一.BeautifulSoup 模块 1.将 Beautiful 对象实例化的两种方法 (1)将本地 HTML 文档转为 Beau ...

  4. python爬虫之使用BeautifulSoup模块抓取500彩票网竞彩足球赛果及赔率

    目录 前言 分析思路 数据储存 代码 结果展示 结语 前言 竞彩足球是目前比较受欢迎的一种体彩彩种,玩法较为灵活多样,赔率可观,今天就来记录一下如何抓取竞彩足球的开奖信息和赔率. 分析思路 我使用的网 ...

  5. Requests 与 BeautifulSoup 模块

    一.Requests库 参考 :http://www.python-requests.org/en/master/user/quickstart/#make-a-request Requests是一个 ...

  6. AI英特尔杯公开课:2019.06.27在线直播《研究生人工智能创新大赛—AI赋能,创新引领》课堂笔记和感悟(二)

    AI英特尔杯公开课:2019.06.27在线直播<研究生人工智能创新大赛-AI赋能,创新引领>课堂笔记和感悟(二) 导读      讲解总体不错,知识点比较基础,适合入门,各种主流框架都有 ...

  7. AI英特尔杯公开课:2019.06.27在线直播《研究生人工智能创新大赛—AI赋能,创新引领》课堂笔记和感悟(一)

    AI英特尔杯公开课:2019.06.27在线直播<研究生人工智能创新大赛-AI赋能,创新引领>课堂笔记和感悟(一) 导读      讲解总体不错,知识点比较基础,适合入门,各种主流框架都有 ...

  8. AI公开课:19.05.29 浣军-百度大数据实验室主任《AutoDL 自动化深度学习建模的算法和应用》课堂笔记以及个人感悟

    AI公开课:19.05.29 浣军 百度大数据实验室主任<AutoDL 自动化深度学习建模的算法和应用>课堂笔记以及个人感悟 导读        浣军博士,汉族,1975年出生于江苏苏州, ...

  9. [python爬虫] BeautifulSoup和Selenium简单爬取知网信息测试

    作者最近在研究复杂网络和知识图谱内容,准备爬取知网论文相关信息进行分析,包括标题.摘要.出版社.年份.下载数和被引用数.作者信息等.但是在爬取知网论文时,遇到问题如下:   1.爬取内容总为空,其原因 ...

  10. python3 beautifulsoup 模块详解_关于beautifulsoup模块的详细介绍

    这篇文章主要给大家介绍了python中 Beautiful Soup 模块的搜索方法函数. 方法不同类型的过滤参数能够进行不同的过滤,得到想要的结果.文中介绍的非常详细,对大家具有一定的参考价值,需要 ...

最新文章

  1. matlab中find函数使用
  2. 面试题编程题06-python 输入一个字符串,反转输出
  3. c# asp.net Pdf 转换图片 在线预览 发布到iis中问题 最终解决篇—_—!
  4. Spring Boot 入门(五):集成 AOP 进行日志管理
  5. 最简单的方式实现一棵二叉树
  6. 文件管理系统_文件管理系统
  7. Java 必须掌握的 12 种 Spring 常用注解
  8. scala的数值类型(三)
  9. Mysql 简介和创建新的数据库
  10. 如何优雅地将Markdon格式文件md转为pdf?(使用typora)
  11. docker 网络配置_Kafka的AWS Docker网络设置
  12. stm32f10x系列.s汇编启动文件
  13. 如何解决Mac启动盘已满的问题?MacBooster帮你清理20种垃圾文件!
  14. 代写python assignment经常用到的代码语法分享!
  15. 【Struts1】--beanutils
  16. VS2010 中文版本
  17. LoadLibraryEx(DONT_RESOLVE_DLL_REFERENCES)的缺陷
  18. 外媒预测2015年十大最热门工作
  19. 华硕笔记本升级固态SSD过程
  20. PyTorch 和 TensorFlow的区别

热门文章

  1. SpreadJS 15.0 隆重登场 SpreadJS
  2. 图像的上采样与下采样
  3. 最新版本的000-919题库
  4. python下载及安装教程
  5. 高恪或者Padavan等品牌路由用N1作为旁路由
  6. c语言函数实现顺序线性表,数据结构C语言实现——顺序线性表SqList
  7. 企业微信api消息接口调用
  8. 导出WPS office文档格式的说明
  9. 基于java的在校大学生贷款管理系统
  10. asp.net助学贷款管理系统案例