乐趣区

关于后端:爬虫之-xPath-用法总结整理

在网络爬虫中,对于 HTML 的解析,XPath 是一种罕用的办法。XPath 最后是用于 XML 中,其次要应用门路表达式在 XML 文档中进行导航。用于 HTML 中次要是因为 HTML 和 XML 十分的类似:它们具备相似的文件构造。都有惟一的根元素。都采纳标签的形式。

同时又有点不同,XML 能够自定义标签而 HTML 的标签是确定的 XML 用于形容数据(和 JSON 一样)而 HTML 用于显示数据(通过浏览器解决)。

XPath 的解析须要依赖于 ”lxml” 库。为了不便咱们能够在谷歌浏览器装置 XPath 插件:xpath.crx。应用 xpath 必须对 HTML 具备肯定的理解。

用于网络爬虫的 XPath 次要应用以下语法:


练习代码如下:


#!/usr/bin/env python
# _*_ coding:utf-8 _*_

from lxml import etree

if __name__ == '__main__':

    text = '''
    <div>
        <ul>
             <li class="item-0"><a href="link1.html">first 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">fourth item</a></li>
             <li class="item-0"><a href="link5.html">fifth item</a> 
         </ul>
     </div>
    '''

    # 1. 转换成 lxml 文档
    html_data = etree.HTML(text)
    # 2. 格式化 理解
    html_result = etree.tostring(html_data)
    # print  html_result
    # 3. 把握的 xpath
    # 3.1 取出所有的 li 标签
    #result = html_data.xpath('//li')
    # 3.2 获取所有 a
    #result = html_data.xpath('//li/a')
    # 3.3 取出内容
    #result = html_data.xpath('//li/a/text()')
    # 3.4 取出 属性的值
    result = html_data.xpath('//li[@class="item-inactive"]/a/@href')
    # 3.5 含糊查问 contains
    #result = html_data.xpath('//li[contains(@class,"1")]')
    print(result)

# .       选取以后节点。# ..      选取以后节点的父节点。# @       选取属性。# *        任意匹配    //div/*  div 元素下的任意元素
# //      从匹配抉择的以后节点抉择文档中的节点,而不思考它们的地位。# //div   选取所有的 div
# //div[@class = "my"]  选取 class = "my" 的 div 结点
# //title[@lang]  选取所有领有名为 lang 的属性的 title 元素。# //title[@lang=’eng’]  选取所有 title 元素,且这些元素领有值为 en

获取演示代码,请在公众号回复‘xPath’。

退出移动版