编码流程:
-指定URL
-发起请求
-获取响应数据
-数据解析
-持久化存储
数据解析分类
-正则
-bs4
-xpath
Bs4解析数据
-bs4解析原理
-1、实例化一个BeautifulSoup对象,并且将源码数据加载到该对象中
-2、通过调取BeautifulSoup对象中相关的属性和方法进行标签定位和数据提取
-环境安装
-1.pip install bs4
-2.pip install lxml
-如何实例化BeautifulSoup
- from bs4 import BeautifulSoup
-对象实例化:
-1.将本地的html文档的数据加载到该对象
-2.将网络上的html页面数据加载到该对象
-提供的用于数据解析的方法和属性
-soup.tagName 返回html中第一次出现的tagName对应的标签内容
-soup.find()
-soup.find(div) = soup.div
属性定位:
-soup,find(‘div’,class_/id/attr=’song)
返回符合的第一个函数
-soup.select:
Soup.select(‘某种选择器(id/class/)’)
使用”>”作为层级选择器
例:soup.select('.song> ul > li')[0]
-获取标签之间的文本数据:
Soup.a.text/string/get_text()
区别:text和get_text()可以获取所有文本内容,string只可以获取直系标签下的文本内容
-获取标签属性值
Soup.a.[href] 获取<a>标签中href的内容
Xpath解析:最常用且高效的一种解析方式,通用性
-xpath解析原理
-1.实例化一个etree对象,且需要将被解析的页面源码数据加载到对象中。
-2.调用etree对象中的方法结合着xpath表达式实现标签的丁文和内容的捕获。
-环境安装
-pip install lxml
-如何实例化一个etree对象
-1.j将本地的html中的源码加载到etree对象中:
Etree.Parse(filePath)
-2.将网上获取的源码加载到该对象中
-etree.HTML(‘page_text’)
-xpath(‘xpath表达式’)
-xpath表达式
- /:表示的是从根节点开始定位。表示一个层级。
-//:表示的是多个层级,从任意位置开始定位。
-属性定位:
//div[@class/id=’song’]
-索引定位
//div[@class/id=’song’]/p[3] 索引是从1开始。
-取文本:
-/text() 获取标签直系文本内容
-//text() 获取标签下所有文本
-取属性:
-/attrName —— img/@src