一.XPath解析 (解析xml/html)
1.安装lxml库:
pip install lxml
2.导包:
from lxml import etree
3.html转xml文档:
xml_html=etree.HTML(提取的html代码名)
4.tostring自动补全代码:
xml=etree.tostring(xml_html)
5.xpath解析:
result=xml.xpath('语法')
6.遍历:
for i in result:
print(i)
注:
//: 表示从任意位置开始
/: 表示根节点开始
@:表示当前属性
[]: 表示当前属性的过滤条件
text(): 获取内容
二.BeautifulSoup解析 解析XML,HTML
安装:
pip install BeautifulSoup4
pip install lxml
导包:
from bs4 import BeautifulSoup
实例化对象:
soup=BeautifulSoup(html,'lxml') html:要解析的内容 lxml:解析器
获取文本内容:soup.string
1. 用标签选择器解析.find_all()
result=soup.find_all('标签')
获取内容.get_text():
for i in result:
print(i.get_text())
根据属性查找:
result=soup.find_all('li',{'class':'element'})
2 .用css选择器解析.select()
class类名前加.
id类名前加#
本层级之间不加空格,下一级用空格隔开
其他和标签选择器相似
三.正则表达式解析 (html)
导包:
import re
3.1 re.match()
3.2 re.search() 匹配第一个数据 推荐
常用: /s:空格
/d:数字
.*?:非贪婪模式
re.S:有换行在,添加这个就行
例:
<li data-view="4" class="active">
<a href="/3.mp3" singer="齐秦">往事随风</a>
</li>
r = re.search('<li\sdata-view="4".*?<a.*?singer="(.*?)">(.*?)</a>',html,re.S)
3.3 re.findall() 匹配所有数据
3.4 re.sub() 替换
替换:re.sub('正则表达式','要替换的内容',原字符串)
追加:re.sub('正则表达式',r'\1 要替换的内容',原字符串) r:表示追加 \1:表示保留原内容
四.jsonpath解析 (json数据)
安装:
pip install jsonpath
导包:
from jsonpath import jsonpath
解析:
title=jsonpath(形参,'$..title')
遍历:
for i in title:
print(i)