解析数据几种方式:
1.XPath解析数据:是一种小型的查询语言,是一门在XML文档中查找信息的语言,支持HTML,可通过元素和属性进行导航
(XPath需要依赖XML的数据库)
使用XPath选取节点:(谷歌浏览器)
1.nodename 选取此节点的所有子节点
2./ 从根节点进行选择
3.// 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置
4. . 选取当前节点
5. .. 选取当前节点的父节点
6./text() 获取当前路径下的文本内容
7./@xxx 提取当前路径下标签的属性值
8.|可选符 可选取若干个路径//p|//div,在当前路径下选取所有符合条件的p标签和div标签
9.xpath('/body/div[1]') ---->>>选取body下第一个div节点
10.xpath('/body/div[last()]') ---->>>选取body下最后一个div节点
11.xpath('/body/div[ast()-1]') ----->>>>选取body下倒数第二个div节点
12.xpath('/body/div[position<3]') ------->>>>选取body下前两个div节点
13.xpath('/body/div[@class]') ------>>>选取body下带有class属性的div节点
14.xpath('/body/div[@class='main']) ----->>>选取body下class属性为main的节点
15.xpath('/body/div[price>35.00]') ---->>>选取body下price元素大于35的div节点
2.Beautifulsoup解析数据:(是一个可以从HTML和XML文件中提取数据的标准库)
Beautifulsoup提取(解析)数据的常用方法:
1.bs.find(标签"div",属性class_="books") ----->>>提取满足要求的首个数据,返回值类型是Tag(标签)类型
2.bs.find_all(标签"div",属性class_="books") ----->>>提取满足要求的所有数据,返回值是Tag(标签)类型
CSS选择器:
1.通过ID查找: bs.select('#abc')
2.通过class查找: bs.select('.abc')
3.通过属性查找: bs.select(a['class="abc"'])
Tag(标签)对象:
1.获取标签 bs.title
2.获取所有属性 bs.title.attrs
3.获取单个属性的值 bs.div.get("class")
bs.div["class"]
bs.a["href"]
3.正则表达式:是一个特殊字符序列,能帮助用户快捷的检查一个字符串是否与某种模式匹配 ---->>>import re
s = "I study python every day"
re.match("I",s).group() ---->>>从字符串开始位置去匹配"I",有的话返回"I",否则返回None
re.match("\w",s).group() ----->>>从字符串开始位置匹配任意数字字母下划线,有的话返回具体字母数字下划线,否则返回None
re.match(".",s).group() ----->>>从字符串开始位置匹配任意字符,有则返回具体任意值,否则返回None
re.search("study",s).group() ---->>>从字符串任意位置去匹配,匹配第一个
re.search("s\w",s).group() ----->>>从任意位置匹配以s开头后面是字母数字下划线的字符串
re.findall("s",s) ---->>>从任意位置匹配s字符,匹配多个(得到的结果是一个列表)
re.findall("P\w+.\d",s) ----->>>从任意位置匹配以P开头后面是任意字符和任意字符以及十进制数字组成的字符串,返回的是一个列表
re.findall("P.+\d",s) ---->>>从任意位置匹配以P开头最后以数字结尾的字符串,返回的是一个列表
sub()作用是替换
print(re.sub("study","like",s)) ---->>>将s字符串中的study替换为like
print(re.sub("s\w+","like",s)) ---->>>将s字符串中以s开头任意字符匹配多次的字符串替换为like
4.pyquery库解析数据:是jQuery的python实现
常见pyquery初始化方式:
1.字符串方式:
from pyquery import PyQuery as pq
doc = pq(str) ----->>>创建pyquery对象
print(doc("#main")) ---->>>获取属性为main的节点
print(doc("a").attr("href")) ---->>>获取a标签当中的href标签的属性
print(doc("#main").html()) ---->>>获取html中main属性<div>开始到</div>结束
print(doc("#main").text()) ---->>>获取html文件中的文本内容
print(type(doc))
2.url方式:
from pyquery import PyQuery as pq
doc = pq("http://www.baidu.com",encoding="utf-8")
print(type(doc))
print(doc("title")) --->>>获取网址的title标签
3.文件
from pyquery import PyQuery as pq
doc = pq(filename="demo.html")
print(type(doc))
09-24
2396
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)