文章目录

  • 写在前面
  • 一、Beautiful Soup库入门
    • 1.Beautifu Soup的安装
    • 2.Beautifu Soup的基本元素
    • 3.基于bs4库的HTML内容遍历方法
    • 4.基于bs4库的HTML格式化和编码
  • 二、信息组织与提取方法
    • 1.信息标记的三种形式
    • 2.三种信息标记形式的比较
    • 3.信息提取的一般方法
    • 4.基于bs4库的HTML内容查找方法
  • 三、实例:中国大学排名定向爬虫
  • 引用源自
  • 写在最后

写在前面

  因为最近在中国大学MOOC网上学习嵩天老师(北京理工大学)的爬虫课程,所以为了方便自己以后编程时查找相关函数和方法,也为了方便各位小伙伴们学习,整理这篇关于爬虫中BeautifulSoup库的基本知识点。本篇涉及图的地方,我会截取课程内容的截图(因为我实在是懒得画图了),涉及表的地方我会重新制作,一是为了美观,二是为了加深印象,因为函数和方法太多不常用的话就会遗网。好了。话不多说,开干!

一、Beautiful Soup库入门

1.Beautifu Soup的安装

  工欲善其事必先利其器,学习bs4库的第一步是安装他,很简单,首先我们win+R,输入cmd进入命令行,输入如下代码

pip install beautifulsoup4

敲下回车,只需等待片刻即可安装成功~

Beautiful Soup库的使用如下:

2.Beautifu Soup的基本元素

(1) Beautiful Soup库的理解


(2)Beautiful Soup类


Beautiful Soup类对应一个HTML/XML文档的全部内容

(3)Beautiful Soup库解析器

解析器 使用方法 条件
bs4的HTML解析器 BeautifulSoup(mk,‘html.parser’) 安装bs4库
lxml的HTML解析器 BeautifulSoup(mk,‘lxml’) pip install lxml
lxml的XML解析器 BeautifulSoup(mk,‘xml’) pip install lxml
html5lib的解析器 BeautifulSoup(mk,‘html5lib’) pip install html5lib

(4)Beautiful Soup库的基本元素

基本元素 说明
Tag 标签,最基本的信息组织单元,分别用<>和</>表明开头和结尾
Name 标签的名字,的名字是’p’,格式:.name
Attributes 标签的属性,字典的组织形式,格式:.attrs
NavigableString 标签内非属性字符串,<>…</>中的字符串,格式:.string
Comment 标签内字符串的注释部分,一种特殊的Comment类型

3.基于bs4库的HTML内容遍历方法

(1)HTML基本格式

(2)标签树的下行遍历

属性 说明
.contents 子节点列表,将所有儿子节点存入列表
.children 子节点的迭代类型,与.contents类似,用于循环遍历儿子节点
.descendants 子孙节点的迭代类型,包含所有子孙节点,用于循环遍历

注:.contents返回的是列表类型,后两个返回的是迭代类型

(3)标签树的上行遍历

属性 说明
.parent 节点的父亲标签
.parents 节点先辈标签的迭代类型,用于循环 遍历先辈节点

(4)标签树的平行遍历

属性 说明
.next_sibling 返回按照HTML文本顺序的下一个平行节点标签
.previous_sibling 返回按照HTML文本顺序的上一个平行节点标签
.next _siblings 迭代类型,返回按照HTML文本顺序的后续所有平行节点标签
.previous_siblings 迭代类型,返回按照HTML文本顺序的前续所有平行节点标签

注:后两个是迭代类型

4.基于bs4库的HTML格式化和编码

(1)格式化
prettify():为html格式的内容和文本增加换行符,也可以对每一个标签做相关的处理。

(2)编码
bs4库将任何读入的html文件或字符串都转换成"UTF-8"编码

二、信息组织与提取方法

1.信息标记的三种形式

信息的标记

(1)XML


(2)JSON


键值对之间可以嵌套使用:

(3)YAML


可以用缩进的形式表示所属关系:


用-(减号)表达并列关系:

|(竖线)表示整块数据 #表示注释

2.三种信息标记形式的比较

名称 优缺点 作用
XML 最早的通用信息标记语言,可扩展性好,但是繁琐 Internet上的信息交互与传递
JSON 信息有类型,适合程序处理,较XML简洁 移动应用云端和节点的信息通信,无注释
YAML 信息无类型,文本信息比例最高,可读性好 各类系统配置文件有注释易读

3.信息提取的一般方法

(1)完整解析信息的标记形式,再提取关键信息。XML,JSON,YAML

需要标记解析器,如bs4库的标签树遍历,优点是信息解析准确,缺点是提取过程繁琐

(2)无视标记信息,直接搜索关键信息。搜索

使用对信息的文本查找函数即可。优点是提取过程简洁,速度快,缺点是提取信息的准确性与信息内容直接相关。

(3)融合方法:完整形式解析+搜索,提取关键信息,需要标记解析器及文本查找函数。

4.基于bs4库的HTML内容查找方法

(1)提取HTML所有URL链接

思路:搜索到所有a标签,解析a标签格式,提取href后的链接内容

url = "http://python123.io/ws/demo.html"
r = requests.get(url)
demo = r.text
soup = BeautifulSoup(demo, "html.parser")
for link in soup.find_all('a'):print(link.get('href'))
--------------out---------------
http://www.icourse163.org/course/BIT-268001
http://www.icourse163.org/course/BIT-1001870001

(2)bs4库中HTML内容的查找方法:

<>.find_all(self, name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs)
#返回一个列表类型,存储查找的结果
name:对标签名称的检索字符串
attrs:对标签属性值的检索字符串,可标注属性检索
recursive:是否对子孙全部搜索,默认为True
string: <>...</>中字符串区域的检索字符串soup.find_all('a')
soup.find_all(['a','b'])
soup.find_all(True)            #返回所有标签
soup.find_all('p', 'course')   #所有属性是course的p标签
soup.find_all(id='link1')      #查找包含属性id='link1'的标签
简写形式:
<tag>(..) 等价于 <tag>.find_all(..)

三、实例:中国大学排名定向爬虫

  这个实例我在博客中有写过完整的解析,感兴趣的小伙伴可以点过去看一下,传送门送给大家。

链接: https://blog.csdn.net/weixin_44578172/article/details/109340255

引用源自

中国大学MOOC Python网络爬虫与信息提取
https://www.icourse163.org/course/BIT-1001870001
CSDN博客:
https://blog.csdn.net/songhui1024/article/details/84575575

写在最后

  本篇属于整理总结类型文章,如果对你有帮助的话,欢迎收藏喔~

ps:一键三连更好啦~

爬虫笔记(二)——Beautiful Soup库相关推荐

  1. Python 网络爬虫笔记3 -- Beautiful Soup库

    Python 网络爬虫笔记3 – Beautiful Soup库 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程 ...

  2. Python 网络爬虫笔记5 -- Beautiful Soup库实战

    Python 网络爬虫笔记5 – Beautiful Soup库实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. ...

  3. 小白学爬虫(三 Beautiful Soup库)

    Beautiful Soup库是解析HTML页面信息标记与提取方法,解析.维护.遍历"标签树"的功能库. 初步使用Beautiful Soup库 from bs4 import B ...

  4. 网络爬虫系列笔记(3)——Beautiful Soup库

    Unit1:Beautiful Soup           一.安装 https://www.crummy.com/software/BeautifulSoup/ 管理员权限打开命令行:pip in ...

  5. python爬虫beautifulsoup实例-Python爬虫学习(二)使用Beautiful Soup库

    (一)使用Beautiful Soup库(默认将HTML转换为utf-8编码) 1,安装Beautiful Soup库:pip install beautifulsoup4 2,简单使用: impor ...

  6. 【Python爬虫】Beautiful Soup库入门

    BeautifulSoup库的安装 安装 pip install beautifulsoup4 测试是否安装成功 Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2 ...

  7. Python中的Beautiful Soup库(笔记)

    介绍 BeautifulSoup是一种可以从html和xml中快速提取内容的python库,共有四种类型,对于爬虫解析来说,主要用其中的遍历文档树和搜索文档树.BeautifulSoup最主要的功能是 ...

  8. 爬虫第二讲:Beautiful Soup库

    第二讲 Beautiful Soup库 一.Beautiful Soup库基础 1.示例引入 #首先爬取下页面 >>>import requests >>>r = ...

  9. python爬虫bs4库_04 Python爬虫之Beautiful Soup库

    Beautiful Soup库的安装 Win平台: 以管理员身份运行 cmd 执行 pip install beautifulsoup4 Beautiful Soup库的安装小测 首先,获取网页源码保 ...

  10. python——爬虫学习——Beautiful Soup库的使用-(2)

    Beautiful Soup库 执行pip install beautifulsoup4安装Beautiful Soup库 Beautiful Soup库的简介 Beautiful Soup是一个可以 ...

最新文章

  1. Javascript变量函数浅谈
  2. 【Netty】NIO 网络通信 SelectionKey 常用 API 简介
  3. 请简述计算机软件系统与硬件系统的关系,电脑硬件与软件的关系是什么?
  4. JVM年轻代参数:-Xmn、-XX:NewSize、-XX:MaxNewSize
  5. activiti脚本任务_Activiti中的高级脚本:自定义配置注入
  6. 《Node应用程序构建——使用MongoDB和Backbone》一第 1 章 介绍与总览1.1 打造一个社交网络...
  7. 程序员修炼之道--从小工到专家(一)
  8. eBPF and IO Visor: The what, how, and what next!
  9. 结巴分词关键词相似度_jieba+gensim 实现相似度
  10. 简单理解Pix2Pix
  11. Linux shell脚本详解及实战(二)——shell脚本之分支
  12. IOS Xcode7 http 和 https
  13. flutter flutter_screenutil Looking up a deactivated widget‘s ancestor is unsafe.
  14. 什么叫黑名单?黑名单还能贷款吗?
  15. 破竹课堂-老A的杠杆术
  16. 为自己搭建一个分布式 IM 系统二【从查找算法聊起】
  17. IDEA创建maven工程(傻瓜式步骤)
  18. 全网最详细之如何安装gpu版的pytorch
  19. 跟领导怎么相处,怎么找话题,或者说跟自己年长的同事或者上司,怎么沟通?
  20. 使用大气校正法对landsat-8tirs地表温度进行反演

热门文章

  1. 用opencv将左右眼视角图片转换为红蓝3D图片
  2. Python-基于request豆瓣电影票房信息爬取,简单粗暴
  3. 震惊!某徐姓诗人竟,,
  4. android 指纹识别 怎么使用方法,android实现指纹识别
  5. wps怎么删掉分节符_怎样删除分页符(批量删除wps文档中展示分页符)
  6. Ubuntu系统查询本地IP
  7. poco mysql 安装_linux 下 POCO 安装
  8. [ctfshow 2021摆烂杯] FORENSICS部分 writeup
  9. Ubuntu18.04创建WiFi热点
  10. 技术人生:高山仰止,景行观止,虽不能至,我心向往之