聚焦爬虫介绍
1.编码流程
- 指定url
- 发起请求
- 获取响应数据
- 数据解析
- 持久化存储
聚焦爬虫详情
- 如何实现数据解析?
- 正则
- bs4
- xpath
- 数据解析的原理
-
实现标签定位
- 将标签存储的文本内容或者相关属性值进行提取
- bs4数据解析
1.环境准备 - pin install bs4 - pip install lxml 2.bs4解析原理 - 实例化一个Beautiful Soup对象,必须将即将被解析的页面源码加载到该实例化对象中 - 调用该对象中相关的属性或者方法进行标签的定位和内容的提取 3.如何实例化一个BeautifulSoup对象 - 本地加载: soup = BeautifulSoup(fp,'lxml') - 网络加载: soup = BeautifulSoup(page_text,'lxml')
4.相关的属性和方法
- soup.tagName -->可以定位标签,定位源码中第一次出现的标签,返回的永远是一个单数 - soup.find() --->基于属性定位实现的标签定位 - soup.find_all() --->基于属性定位实现的所有标签定位,返回一个列表 - 取文本: - string : 取得标签中直系的文本内容 - text/get_text() :取得的是标签下的所有内容 - 取属性: - tag['attrName'] #此种方式 -select: 使用选择器定位标签 返回的是列表 - 标签,类,id选择器 select('选择器') - 层级选择器 - 单层级 '.tang>ul>li' - 多层级 '.tang li'
- xpath数据解析
1.特点:通用性比较强 2.环境安装: pip install lxml 3.解析原理: - 实例化一个etree对象,且将解析页面源码加载到该对象中 - 使用该对象中xpath方法接合xpath表达式进行标签定位和数据解析提取
4.etree对象实例化 - 本地加载: tree = etree.parse("file_path") - 网络加载 tree = etree.HTML(page_text)
5.相关的属性和方法
#常用的xpath的表达式:基于标签的层级实现定位 - /:从跟标签开始实现层级定位 - //:从任意位置实现标签定位 - 属性定位: //tag[@class="name"] - 索引定位: //div[@class="name"]//li[5] - 取文本: -取得直系文本内容:/text() -取得所有文本内容://text() - 取属性:/@attrName