三种数据解析方式

Posted daizongqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三种数据解析方式相关的知识,希望对你有一定的参考价值。

第一种:xpath

使用流程:

  1. 下载:pip install lxml
  2. 导包:from lxml import etree
  3. 创建etree对象进行指定数据的解析

        本地:etree=etree.parse(‘本地文件路径‘)

               etree.xpath(‘xpath表达式‘)

        网络:etree=etree.html(‘网络请求到的页面数据‘)

               etree.xpath(‘xpath表达式‘)

案例:

test.html

<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>测试</title>
</head>
<body>
    <div>
        <p>百里守约</p>
    </div>
    <div class="song">
        <p>李清照</p>
        <p>王安石</p>
        <p>苏轼</p>
        <p>柳宗元</p>
        <a href="http://www.song.com/" title="赵匡胤" target="_self">
            <span>this is span</span>
        宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱</a>
        <a href="" class="du">总为浮云能蔽日,长安不见使人愁</a>
        <img src="http://www.baidu.com/meinv.jpg" alt="" />
    </div>
    <div class="tang">
        <ul>
            <li><a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a></li>
            <li><a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a></li>
            <li><a href="http://www.126.com" alt="qi">岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a></li>
            <li><a href="http://www.sina.com" class="du">杜甫</a></li>
            <li><a href="http://www.dudu.com" class="du">杜牧</a></li>
            <li><b>杜小月</b></li>
            <li><i>度蜜月</i></li>
            <li><a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a></li>
        </ul>
    </div>
</body>
</html>

练习:

from lxml import etree
#xpath函数返回的总是一个列表
#创建etree对象进行指定数据解析
tree = etree.parse(./test.html)#./表示当前路径
#属性定位:根据指定的属性定位到指定的节点标签
#tree.xpath(‘//div[@class="song"] ‘)#//表示相对路径,所有子代节点,不用考虑是否直接子节点
#层级索引定位
#tree.xpath(‘//div[@class="tang"]/ul/li[2]/a‘)
#逻辑定位
#tree.xpath(‘//a[@href="" and @class="du"]‘)
#模糊查询
#tree.xpath(‘//div[contains(@class, "ng")]‘)
#tree.xpath(‘//div[starts-with(@class, "ta")]‘)
#取文本
#tree.xpath(‘//div[@class="song"]/p[1]/text()‘) #/text()获取当前标签中直系存储的文本数据
#tree.xpath(‘//div[@class="tang"]//text()‘)   #//text()获取某一个标签下所有子标签中存储的文本数据
#取属性
# tree.xpath(‘//div[@class="tang"]//li[2]/a/@href‘)
#/表示绝对路径,从根节点选取
#.表示选取当前节点
#..表示选取当前节点的父节点
#@表示 选取属性

 

以上是关于三种数据解析方式的主要内容,如果未能解决你的问题,请参考以下文章

爬虫-三种数据解析方式

三种数据解析方式

25-2 三种数据解析方式

三种数据解析方式

网络爬虫的三种解析方式 -- 2019-08-08 18:01:21

Python网络爬虫之三种数据解析方式