python爬虫xpath的用法

python爬虫xpath的用法

一、xpath介绍

XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。

XPath 使用路径表达式在 XML 文档中进行导航
XPath 包含一个标准函数库
XPath 是 XSLT 中的主要元素

试验所使用的html代码

    import lxml.html
    test_data = """
            <div>
                <ul>
                     <li class="item-0"><a href="link1.html" id="places_neighbours__row">9,596,960first item</a></li>
                     <li class="item-1"><a href="link2.html">second item</a></li>
                     <li class="item-inactive"><a href="link3.html">third item</a></li>
                     <li class="item-1"><a href="link4.html" id="places_neighbours__row">fourth item</a></li>
                     <li class="item-0"><a href="link5.html">fifth item</a></li>
                     <li class="good-0"><a href="link5.html">fifth item</a></li>
                 </ul>
                 <book>
                        <title lang="aaengbb">Harry Potter</title>
                        <price id="places_neighbours__row">29.99</price>
                </book>
                <book>
                    <title lang="zh">Learning XML</title>
                    <price>39.95</price>
                </book>
                <book>
                    <title>Python</title>
                    <price>40</price>
                </book>
             </div>
      
            """
            '''
/   从根标签开始
//  从当前标签
*   通配符
//div/book[1]/title     选择div下第一个book标签的title元素
//div/book/title[@lang= "zh"]   选择title属性含有lang且内容是zh的title元素
//div/book/title //book/title //title   具有相同的结果,因为使用相对路径最终都指向title
//book/title/@* 将title      所有的属性值选择选择出来
//book/title/text()     将title的内容选择出来,使用内置text()函数
//a[@href='link1.html'and @id='places_neighbours__row']
//div/book[last()]/titlt/text()     #将最后一个book元素选出来
//div/book[price > 39]/title/text()     将book子标签price数值大于39的选择出来
//li[starts-with(@class,"item")]/a/text()   将class属性前缀是item的li标签选出
//title[contains(@lang,"eng")]      将title属性lang含有eng关键字的标签选出

'''



html = lxml.html.fromstring(test_data)
html_data = html.xpath('//div/book[1]/title')
print(html_data)
# print(dir(html_data[0]))
for i in html_data:
    print(i.text)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值