三大数据解析方式:
- Beautifulsoup
- 正则表达式
- xpath
其中xpath最为常用,也最为方便。
数据解析的基本原理:
bs4:
- 标签定位
- 提取标签,标签属性中存储的数据值
原理:
- 实例化一个BeautifulSoup对象,并将页面源码数据加载在该对象中
- 通过调用BeautifulSoup对象中相关属性或者方法进行标签定位和数据提取
环境安装:
pip install bs4
如何实例化 BS 对象:
- 将本地的html文档中的数据加载到该对象中
- 将互联网获取的页面源码加载到该对象中
用于数据解析的方法与属性:
find():返回搜索到的第一条数据元素;
find_all():以列表形式返回所有的搜索到的标签数据;
select():选择性获取对应的数据,通过css选择器的方式来提取数据。返回的是一个列表。
获取标签之间的文本数据:
soup.a.text / string / get_text():
text/get_text():可以获取一个标签中所有的文本内容
string:只可以获得该标签下直系的文本内容
正则表达式:
字符:
量词:
修饰前面的一个表达式,如果要修饰多个表达式,就用( )把表达式包起来。
xpath:
最常用也是最便捷高效的一种解析方式,具有通用性。
xpath解析原理:
- 实例化一个etree的对象,且将需要被解析的页面源码数据加载到该对象中
- 调用etree对象中的xpath方法,结合着xpath表达式实现标签的定位以及内容的捕获.
环境的安装:
pip install lxml
如何实例化一个etree对象:
- 将本地的html文档中的源码数据加载到该对象中 etree.parse(filePath)
- 以将从互联网上获取的源码数据加载到该对象中etree.HTML('page_text')
xpath表达式:
二、小结:
综上所述,XPath、BeautifulSoup4和正则表达式各有优缺点和适用场景,可以根据具体需求选择不同的方式。
XPath适用于XML和HTML文档结构比较复杂、需要进行多种条件筛选和操作的情况;
BeautifulSoup4适用于处理HTML文档、对文档结构要求不高的情况;
正则表达式适用于需要进行高级模式匹配和替换的情况。