• xpath使用


    之前已经对爬虫基本知识点用一篇博客总结过来,因为xpath实在太重要了,单独放一篇

    """
    xpath使用   参考:https://www.w3school.com.cn/xpath/index.asp
    """
    from lxml import etree
    
    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>
    
    '''
    
    html = etree.HTML(text)
    result = etree.tostring(html)
    print(result.decode('utf-8'))
    
    """
    父节点
    """
    print(html.xpath('//a[@href="link4.html"]/../@class'))  # ['item-1']
    print(html.xpath('//a[@href="link4.html"]/parent::*/@class'))  # ['item-1']  父节点后的所有
    
    """
    属性匹配
    """
    print(html.xpath('//li[@class="item-0"]'))  # [<Element li at 0x7fc245c3eec0>, <Element li at 0x7fc245c3ee80>]
    
    """
    文本获取
    """
    print(html.xpath('//li[@class="item-0"]/text()'))  # ['
         ']
    print(html.xpath('//li[@class="item-0"]/a/text()'))  # ['first item', 'fifth item']
    print(html.xpath('//li[@class="item-0"]//text()'))  # ['first item', 'fifth item', '
         ']
    
    """
    属性获取
    """
    print(html.xpath('//li/a/@href'))  # ['link1.html', 'link2.html', 'link3.html', 'link4.html', 'link5.html']
    
    """
    属性多值匹配
    """
    text2 = '''
        <li class="li li-first" name="item"><a href="link1.html">first item</a></li>
    '''
    html2 = etree.HTML(text2)
    print(html2.xpath('//li[@class="li"]/a/text()'))  # []
    # 使用contains()方法,第一个参数传入属性名称,第二个参数传入属性值
    print(html2.xpath('//li[contains(@class, "li")]/a/text()'))  # ['first item']
    
    """
    多属性匹配
    or  或     age=19 or age=20
    and 与        age>19 and age<25
    mod  计算除法的余数   5 mod 2
    |   计算两个节点集    //book | //cd
    +    加法
    -    减法
    *    乘法
    div  除法
    =    等于       age=12
    !=   不等于
    <   小于
    <=   
    >
    >=   
    """
    print(html2.xpath('//li[contains(@class, "li") and @name="item"]/a/text()'))  # ['first item']
    
    """
    按序选择
    """
    print(html.xpath('//li[1]/a/text()'))  # ['first item']  选择第一个li节点(从1开始)
    print(html.xpath('//li[last()]/a/text()'))  # ['fifth item']
    print(html.xpath('//li[position()<3]/a/text()'))   # ['first item', 'second item']  # 位置小于3
    print(html.xpath('//li[last()-2]/a/text()'))   # ['third item']  倒数第3个
    
    """
    节点轴选择
    """
    

    时间太紧,不像努力了?

    浏览器Elements的搜索是支持Xpath的

    可以使用浏览器复制出Xpath(公式很长,需要修改)

    借助浏览器插件?
    自行百度

  • 相关阅读:
    如何查看苹果id的登陆设备
    苹果手机怎么下载软件app
    苹果id密码正确登录不了怎么办
    如何给美国苹果id充值
    苹果新手机导入旧手机数据
    苹果手机怎么下载安装netflix奈飞
    iOS全埋点解决方案界面预览事件
    iOS全埋点解决方案控件点击事件
    iOS全埋点解决方案UITableView和UICollectionView点击事件
    iOS全埋点解决方案应用退出和启动
  • 原文地址:https://www.cnblogs.com/fly-book/p/15083442.html
Copyright © 2020-2023  润新知