• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python 网页解析器掌握第三方 lxml 扩展库与 xpath 的使用方法

    今天说的则是使用另外一种扩展库 lxml 来对网页完成解析。同样的,lxml 库能完成对 html、xml 格式的文件解析,并且能够用来解析大型的文档、解析速度也是相对比较快的。

    要掌握 lxml 的使用,就需要掌握掌握 xpath 的使用方法,因为 lxml 扩展库就是基于 xpath 的,所以这一章的重点主要还是对 xpath 语法使用的说明。

    1、导入 lxml 扩展库、并创建对象

    # -*- coding: UTF-8 -*-
    
    # 从 lxml 导入 etree
    from lxml import etree
    
    # 首先获取到网页下载器已经下载到的网页源代码
    # 这里直接取官方的案例
    html_doc = """
    html>head>title>The Dormouse's story/title>/head>
    body>
    p class="title">b>The Dormouse's story/b>/p>
    
    p class="story">Once upon a time there were three little sisters; and their names were
    a href="http://example.com/elsie" rel="external nofollow" class="sister" id="link1">Elsie/a>,
    a href="http://example.com/lacie" rel="external nofollow" class="sister" id="link2">Lacie/a> and
    a href="http://example.com/tillie" rel="external nofollow" class="sister" id="link3">Tillie/a>;
    and they lived at the bottom of a well./p>
    
    p class="story">.../p>
    """
    
    # 初始化网页下载器的 html_doc 字符串,返回一个 lxml 的对象
    html = etree.HTML(html_doc)

    2、使用 xpath 语法提取网页元素

    按照节点的方式获取元素

    # xpath() 使用标签节点的方式获取元素
    print html.xpath('/html/body/p')
    # [Element p at 0x2ebc908>, Element p at 0x2ebc8c8>, Element p at 0x2eb9a48>]
    print html.xpath('/html')
    # [Element html at 0x34bc948>]
    # 在当前节点的子孙节点中查找 a 节点
    print html.xpath('//a')
    # 在当前节点的子节点中查找 html 节点
    print html.xpath('/html')

    按照筛选的方式获取元素

    '''
    根据单一属性获取元素
    '''
    # 获取子孙节点中,属性 class=bro 的 a 标签
    print html.xpath('//a[@class="bro"]')
    
    # 获取子孙节点中,属性 id=link3 的 a 标签
    print html.xpath('//a[@id="link3"]')
    
    '''
    根据多个属性获取元素
    '''
    # 获取class属性等于sister,并且id等于link3的a标签
    print html.xpath('//a[contains(@class,"sister") and contains(@id,"link1")]')
    
    # 获取class属性等于bro,或者id等于link1的a标签
    print html.xpath('//a[contains(@class,"bro") or contains(@id,"link1")]')
    
    # 使用 last() 函数,获取子孙代的a标签的最后一个a标签
    print html.xpath('//a[last()]')
    # 使用 1 函数,获取子孙代的a标签的第一个a标签
    print html.xpath('//a[1]')
    # 标签筛选,position()获取子孙代的a标签的前两个a标签
    print html.xpath('//a[position()  3]')
    
    '''
    使用计算的方式,获取多个元素
    '''
    # 标签筛选,position()获取子孙代的a标签的第一个与第三个标签
    # 可以使用的计算表达式:>、、=、>=、=、+、-、and、or
    print html.xpath('//a[position() = 1 or position() = 3]')
    

    获取元素的属性与文本

    '''
    使用@获取属性值,使用text() 获取标签文本
    '''
    # 获取属性值
    print html.xpath('//a[position() = 1]/@class')
    # ['sister']
    # 获取标签的文本值
    print html.xpath('//a[position() = 1]/text()')
    

    到此这篇关于python 网页解析器掌握第三方 lxml 扩展库与 xpath 的使用方法的文章就介绍到这了,更多相关python lxml 扩展库与 xpath内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • python网络爬虫精解之pyquery的使用说明
    • python爬虫之Appium爬取手机App数据及模拟用户手势
    • Python 给我一个链接西瓜视频随便下载爬虫
    • python网络爬虫精解之XPath的使用说明
    上一篇:python删除csv文件的行列
    下一篇:python基于tkinter制作图形界面的2048游戏
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python 网页解析器掌握第三方 lxml 扩展库与 xpath 的使用方法 python,网页,解析,器,掌握,