zoukankan      html  css  js  c++  java
  • 从零开始的python爬虫教程(Day04)

    简介

    XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。(来源于百度百科)

    常用规则

    符号含义
    节点名称 选取此节点以及所有子节点
    / 选取此节点的子节点
    // 选取子节点的子孙节点
    . 选取当前节点
    .. 选取当前节点的父节点
    @ 选取属性

    XPath使用方法(lxml.etree)

    导入lxml库:

    from lxml import etree
    

    test.html

    <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:

    html = etree.parse('./test.html', etree.HTMLParser())
    

    01 获取父节点

    # result = html.xpath('//a[@href="link4.html"]/../@class') # 使用/..来获取选中节点的父节点
    result = html.xpath('//a[@href="link4.html"]/parent::*/@class') # 使用/parent::来获取选中节点的父节点
    print(result)
    
    ['item-1']
    

    02 获取节点文本

    result = html.xpath('//a[@href="link1.html"]/text()') # 获取某个节点中的文本内容使用/text()
    print(result)
    result = html.xpath('//li[@class="item-0"]/a/text()')
    print(result)
    
    ['first item']
    ['first item', 'fifth item']
    

    03 属性多值匹配

    result = html.xpath('//a[contains(@href, "html")]/text()') # 使用contains()函数来进行属性多值匹配
    print(result)
    
    ['first item', 'second item', 'third item', 'fourth item', 'fifth item']
    

    04 多属性匹配

    text = '<li class="li li-first" name="item"><a href="link.html">first item</a></li>'
    text_html = etree.HTML(text)
    result = text_html.xpath('//li[contains(@class, "li") and @name="item"]/a/text()') # 使用and添加需要匹配的属性
    print(result)
    
    ['first item']
    
  • 相关阅读:
    JDK和TOMCAT环境变量配置
    MEF(Managed Extensibility Framework )的入门介绍
    这样的数据导出你知道?
    ListBox实现拖拽排序功能
    各种技术资源汇总
    大话数据结构-排序
    大话数据结构-查找
    CheckListBox的实现方式分析
    listbox里面添加WrapPanel ,支持自适应换行
    RESTful 接口实现简明指南
  • 原文地址:https://www.cnblogs.com/lbr12218/p/14609054.html
Copyright © 2011-2022 走看看