网络爬虫之数据解析
聚焦爬虫:爬取页面中指定的页面内容
– 编码流程
-指定url
-发起请求
-获取响应数据
-数据解析
-持久化存储
数据解析分类
-正则
-bs4
-xpath 学习重点
数据解析原理概述:
– 解析的局部的文本内容都会在标签之间或者标签对应的属性中进行存储
– 进行指定标签的定位
– 标签或者标签对应的属性中存储的数据值进行提取(解析)
<div class="thumb"> <a href="/article/124317196" target="_blank"> <img src="//pic.qiushibaike.com/system/pictures/12431/124317196/medium/ZQZC0FOCMI4ZPI6S.jpg" alt="糗事#124317196" class="illustration" width="100%" height="auto"> </a> </div>
1.使用正则进行数据解析
ex='<div class="thumb">.*?<img src="(.*?)" alt.*?</div>' img_src_list = re.findall(ex,page_text,re.S)
2.bs4进行数据解析
——数据解析的原理
——1.标签定位
——2.提取标签、标签属性中存储的数据值
-bs4数据解析的原理
——1.实例化一个beautifulsoup对象,并且将页面源代码数据加载到该对象中
——2.通过调用beautifulsoup对象中相关属性或方法进行标签定位和数据提取
-环境安装
-pip install bs4
-pip install lxml
-如何实例化beautifulsoup对象:
-1.from bs4 import BeautifulSoup
-对象的实例化
-1.将本地的HTML文档中的数据加载到该对象中
fp = open(’./lunch.html’,‘r’,encoding=‘utf-8’)
soup = BeautifulSoup(fp,‘lxml’)
-2.将互联网上获取的页面源代码加载到该对象中
page_text = response.text
soup = BeautifulSoup(page_text,‘lxml’)
-提供的用于数据解析的方法和属性
-soup.tagName 返回的是html中第一次出现的tagName标签
-属性定位:
-soup.find(‘div’,class_=/id/attr=‘foot1’) class属性要在后面加上_
-soup.find_all(‘tagName’) :返回符合要求的所有标签(列表)
-select:
-select(‘某种选择器(id,class,标签选择器)’),返回的是一个列表
-层级选择器
-soup.select(’#bcont3 > ul > li >div >div’)[0]:>表示的是一个层级
-soup.select(’#bcont3 > ul a’):空格表示多个层级
-获取标签之间的文本数据:
-soup.a.text/string/get_text()
-text/get_text():可以获取某一个标签中所有的文本内容
-string:只可以获取该标签下面直系的文本内容
-获取标签中的属性值
soup.select(’#bcont3 > ul > li div>div ')[0].img[‘width’])
相关文章
- Windows 10/11 福利:微软为所有安卓手机带来 Windows 剪贴板同步功能
- 就很凸然,电脑里多出了一个文件···
- HarmonyOS 分布式亲子教育
- 十大面向Windows的免费数据恢复工具
- Windows 7还能升级Windows 11吗?微软披露Windows11升级细节
- 从模型复杂度角度来理解过拟合现象
- 拉格朗日乘数法,一种计算条件极值的方式
- elasticsearch高亮之highlight原理
- elasticsearch查询之大数据集分页查询
- elasticsearch之多索引查询
- 如何使用注解优雅的记录操作日志 | 萌新写开源 01
- elasticsearch支持大table格式数据的搜索
- 解析fiddler返回的部分数据。
- SpringBoot快速配置多数据源(整合MyBatis)
- WebSocket集群分布式改造:实现多人在线聊天室
- MongoDB之TextSearch简介
- 快速搭建Zookeeper和Kafka环境
- 【秒杀系统】秒杀系统实战(四)| 缓存与数据库双写一致性实战
- 【秒杀系统】秒杀系统实战(五)| 如何优雅的完成订单异步处理
- 缓存与数据库双写一致性 深度分析