码迷,mamicode.com
首页 > 其他好文 > 详细

三种数据解析方式

时间:2019-06-09 09:50:05      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:ref   start   self   模糊查询   tle   family   meta   import   文件   

第一种: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‘)
#/表示绝对路径,从根节点选取
#.表示选取当前节点
#..表示选取当前节点的父节点
#@表示 选取属性

 

三种数据解析方式

标签:ref   start   self   模糊查询   tle   family   meta   import   文件   

原文地址:https://www.cnblogs.com/daizongqi/p/10992579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!