python爬虫之bs4模块(超详细)
python爬虫之bs4模块(超详细)
- 一、bs4简介
- 二、使用方法
- 三、BeautifulSoup四大对象种类
- (1)tag
- (2)NavigableString
- (3)BeautifulSoup
- (4)Comment
- 四、CSS选择器
一、bs4简介
即BeautifulSoup,是python种的一个库,最主要的内容就是从网页中抓取数据。
Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。
二、使用方法
1.首先导入bs4库
from bs4 import BeautifulSoup
2.然后我们利用requests或者urllib2来打开一个网址(这里以https://www.baidu.com为例)
import requests
url = "https://www.baidu.com"
r1 = requests.get(url,'lxml')
r1.encoding='utf-8'
#print (r1.text)
输出结果:
3.创造一个BeautifulSoup对象
bs_1=BeautifulSoup(r1.text,'lxml')
#print(bs_1)
两个参数:第一个参数是要解析的html文本,第二个参数是使用那种解析器,对于HTML来讲就是html.parser,这个是bs4自带的解析器。
如果一段HTML或XML文档格式不正确的话,那么在不同的解析器中返回的结果可能是不一样的。
解析器 | 使用方法 | 优势 |
---|---|---|
python标准库 | BeautifulSoup(html, “html.parser”) |
1、Python的内置标准库 2、执行速度适中 3、文档容错能力强 |
lxml HTML | BeautifulSoup(html, “lxml”) |
1.速度快 2.文档容错能力强 |
lxml XML | BeautifulSoup(html, [“lxml”, “xml”]) BeautifulSoup(html, “xml”) |
1.速度快 2.唯一支持XML的解析器 |
html5lib | BeautifulSoup(html, “html5lib”) |
1.做好的容错性 2.以游览器的方式解析文档 3.生成HTML5的文档 |
4.然后通过这个对象来实现对获取到的源码进行筛选和处理
print(bs_1.prettify()) #格式化输出全部内容print(bs_1.标签名)#标签名有html,head,title,meta,body,script,style等等
三、BeautifulSoup四大对象种类
Beautiful Soup 将复杂HTML文档转换成一个复杂的树形结构,每个节点都是 Python 对象,所有对象可以归纳为4种
(1)tag
Tag对象与 xml 或 html 原生文档中的 tag 相同。
bs_1=BeautifulSoup(r1.text,'lxml')
tag = bs_1.head
print(type(tag))
#<class 'bs4.element.Tag'>
如果不存在,则返回 None,如果存在多个,则返回第一个。
- Name :每个 tag 都有自己的名字
tag.name
# 'head'
- Attributes:tag 的属性是一个字典
tag['class']
# 'boldest'tag.attrs
# {'class': 'boldest'}type(tag.attrs)
# <class 'dict'>
- 多值属性:最常见的多值属性是class,多值属性的返回 list
soup = BeautifulSoup('<p class=""></p>')print(soup.p['class']) # ['body', '']print(soup.p.attrs) # {'class': ['body', 'aaa']}
如果某个属性看起来好像有多个值,但在任何版本的HTML定义中都没有被定义为多值属性,那么Beautiful Soup会将这个属性作为字符串返回。
a1 = BeautifulSoup('<p id="my id"></p>', 'html.parser')
print(a1.p['id']) # 'my id'
- Text:返回 tag 的所有字符串连成的字符串
- 其他方法
tag.has_attr('id') #返回 tag 是否包含 id 属性
以上代码还可以写成 ’ id ’ in tag.attrs 的形式,之前说过,tag 的属性是一个字典。
(2)NavigableString
字符串常被包含在 tag 内,Beautiful Soup 用 NavigableString 类来包装 tag 中的字符串。但是字符串中不能包含其他 tag。
a1 = BeautifulSoup('<b class="aaa">bbb</b>')s = a1.b.stringprint(s) # bbbprint(type(s)) # <class 'bs4.element.NavigableString'>
(3)BeautifulSoup
BeautifulSoup 对象表示的是一个文档的全部内容。大部分时候,可以把它当作 Tag 对象。但是 BeautifulSoup 对象并不是真正的 HTM L或 XML 的 tag,它没有attribute属性,name 属性是一个值为“[document]”的特殊属性。
(4)Comment
comment一般表示文档的注释部分
a1 = BeautifulSoup("<b><!--This is a comment--></b>")comment = a1.b.stringprint(comment) # This is a commentprint(type(comment)) # <class 'bs4.element.Comment'>
四、CSS选择器
css的规则:
标签名不加任何修饰,类名前加点,id名前加#,在这里用的方法大致是一样的,用到的方法是bs_1.select(),它的返回值是一个列表list
通过标签名字
print bs_1.select('title')
通过类名
print bs_1.select('.class')
通过id
print bs_1.select('#a_1')
组合查找
这里和在写css的格式是一样的
print bs_1.select('.class #id')#意思是查找.class类下的id是id的元素
子查询
print bs_1.select('head > title')
属性查找
print bs_1.select(p[class="new"])
python爬虫之bs4模块(超详细)相关推荐
- Python 爬虫统计影评,超详细(按照步骤弄不出来杀楼主祭天)
在学习网络爬虫之前,先看一下完成效果吧,勾起大家的学习兴趣 图片中显示的文字,正是爬取的豆瓣电影中第一个正在热播的电影的评价中出现的高频词汇 是不是很有学习兴趣呀?准备开始Python的学习之旅吧,在 ...
- python爬虫详细步骤-Python爬虫实践入门,超详细
1.前言 学习Python二个多月啦,周末时开始兴趣学习爬虫,虽然有点概念,但是也折腾了大半天,下面就开始简要记录一下吧. 2.需要的准备 Python:需要基本的python语法基础 request ...
- 硬核来袭!!!一篇文章教你入门Python爬虫网页解析神器——BeautifulSoup详细讲解
文章目录 一.BeautifulSoup介绍 二.安装 三.bs4数据解析的原理 四.bs4 常用的方法和属性 1.BeautifulSoup构建 1.1 通过字符串构建 1.2 从文件加载 2.Be ...
- Python爬虫之urllib模块2
Python爬虫之urllib模块2 本文来自网友投稿 作者:PG-55,一个待毕业待就业的二流大学生. 看了一下上一节的反馈,有些同学认为这个没什么意义,也有的同学觉得太简单,关于Beautiful ...
- Python爬虫进阶——urllib模块使用案例【淘宝】
Python爬虫基础--HTML.CSS.JavaScript.JQuery网页前端技术 Python爬虫基础--正则表达式 Python爬虫基础--re模块的提取.匹配和替换 Python爬虫基础- ...
- python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程
python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程 前言 一丶整体思路 二丶遇到的问题 三丶分析URL 四丶解析页面 五丶写入文件 六丶完整代码 七丶最后 前言 大家好我是墨绿 头顶总 ...
- Python爬虫:bs4解析
Python爬虫:bs4解析 html语法 什么是bs4 bs4安装 从bs4中查找数据的方法 bs4的基本使用 实例:使用bs4爬取优美图库图片 思路 代码 html语法 <标签 属性=&qu ...
- Python爬虫(scrapy模块、bs4模块) 爬取笔趣阁全本小说(三级页面)
今天要做的是一个爬虫小项目,爬取小说网站,那么首先呢先对网站进行分析,这里要想爬取到每部小说的全部章节,需要爬取到三级页面,让我们看看代码实现.(https://m.wanwenhui.com/shu ...
- 浅谈Python爬虫之BeautifulSoup模块
目录 前言 安装库 导入库 解析文档示例 提取数据示例 CSS选择器 实例小项目 总结 前言 BeautifulSoup是主要以解析web网页的Python模块,它会提供一些强大的解释器,以解析网 ...
最新文章
- c++小项目:通讯录管理系统
- python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...
- Linux命令(2)—— 如何切换当前目录
- delphi TStrings的一些用法
- 三维重建6:绑架问题/SensorFusion/IMU+CV-小尺度SLAM
- 微信不再提供小程序打开App?借助H5为App引流的方式你必须知道!
- AI手机会怎么样?那不得看高通骁龙的AI能怎样
- 想学python买什么书好-学习 Python 用哪本书好?
- 计算机动画原理课程设计,Flash动画优化的原理和常用优化方式,毕业论文,课程设计,PPT,开发报告,外文翻译 - 论文助手...
- 软件工程 - 设计模式学习之策略模式Strategy
- 如何添加网络打印机-查看IP地址就可以
- 机器学习为什么也可以像人一样认识cang老师
- 【新书推荐】【2019.05】噩梦巷(美国屡次被禁的黑色惊悚小说。一条从头到尾漆黑的巷子——奔跑、遥不可及的光,成了他一生的梦魇...
- wps删除分节符导致前面格式变乱的解决方案
- Python学习之路:关于列表(List)复制的那点事
- 5G笔记| 概述:5G网络架构(NSA/SA组网)、无线资源控制RRC、语音通话
- 【Kotlin】标准库函数 ③ ( with 标准库函数 | also 标准库函数 )
- 对比python字符串函数,学习pandas的str矢量化字符串函数
- 关于正负样本不平衡问题的解决方法收集整理
- 五年级英语短文计算机,五年级英语阅读短文大全