• Python——XPath使用


    一:XPath介绍

    XPath全称XML路径语言,用于确定XML文档中某部分位置。XPath基于XML树状结构,在树中寻找结点。

    现在,一般使用XPath在XML中查找、提取信息,同时,它也支持HTML。所以,我们可以用XPath取代正则表达式来提取信息。

    XPath通过元素以及属性进行导航。

    二:XPath使用大概步骤

    1:安装lxml模块

    2:导入树形结构

    from lxml import etree

    3:把requests抓取的网页转化为树形结构

    selector=etree.HTML(网页源码)

    4:从树形结构中查找信息

    selector.xpath(查找条件)

    三:实战

    Xpath提取内容:

    手动分析法:右键网页—>审查元素—>点击左侧的树结构,逐层展开找到自己需要抓取的内容,这个逐层元素标签构成的路径就是目标元素的路径

    谷歌浏览器生成法::右键网页—>审查元素—>点击左侧的树结构,逐层展开找到自己需要抓取的内容—>右键目标元素弹出菜单,选择“copy xpath”,即可获取目标元素的路径

    观察可知,XPath提取内容的规律:

    //  定位根节点

    /   进入下一层

    /text()  获取当前层文本内容

    /@XXX   获取XXX属性值

    #coding:utf8
    from lxml import etree
    import requests
    
    #连接到网页获取源码
    html=requests.get("http://www.74xw.com/")
    html.encoding='utf-8'
    str=html.text
    #转为树形结构
    selector=etree.HTML(str)
    #使用xpath提取内容
    titles=selector.xpath("/html/body/div[2]/div[1]/div[2]/div/a/@title")
    for title in titles:
        print title

    四:特殊情况处理

    相同字符开头的标签如何处理?

    使用start-with(@属性名,属性值中开头相同的部分)

    content=html.xpath("//div[start-with(@id,"class-")]/text()")

    标签嵌套标签如何处理?

    使用先抓大,再抓小的法则以及string(.):

    data=html.xpath("//大标签")[0] #抓大
    info=data.xpath('string(.)')  #抓小(含
    与空格)
    str=info.replace('
    ','').replace(' ','') #把
     与 空格 处理掉
    print str
  • 相关阅读:
    ASP.NET常用技巧方法代码断
    130道ASP.NET面试题
    ASP.NET 数据绑定常用代码及其性能分析
    asp.net C# 时间格式大全
    ASP.NET 日期 时间 年 月 日 时 分 秒 格式及转换
    经典算法,每个语言都出现的算法
    Asp.net 后台添加CSS、JS、Meta标签
    ASP.NET 窗体间传值实现方法详解
    asp.net 常用的几种调用存储过程的方法
    codeforces 868C
  • 原文地址:https://www.cnblogs.com/ygj0930/p/7026261.html
Copyright © 2020-2023  润新知