• xpath的基本使用


                           

    from lxml import etree

    text ="""

    这里是通过requests库的get方法或post方法获取的信息

    """

    html = etree.HTML(text) #传入验证参数text,实例化出来一个html的对象

    result = etree.tostring(html)#把HTML类实例化的对象传入进去,调用tostring()方法输出修正后的HTML

    代码,但是结果是bytes类型。

    print(result.decode('utf-8'))#或 str(result,encoding=‘utf-8’)

    直接读取文本文件进行解析

    from lxml import etree

    html = etree.parse('./test.html',etree.HTMLParser()) #test.html是html文件,etree.HTMLParser(),解析器

    result = etree.tostring(html)

    print(result.decode('utf-8'))

    具体使用;

    from lxml import etree

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

    result = html.xpath('//li') 选取所有的li节点,是一个列表的形式

    print(result)

    print(result[0]) #获取一个对象

    其中/用于获取直接子节点,//用于获取子孙节点。

    文本获取

    用xpath中的text()方法获取节点中的文本。

    from lxml import etree

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

    result = html.xpath('//li[@class="item-0"]/text()')#这里解释这句匹配是什么意思,选取当前文档所有属性

    class的值等于item-0的li标签里面的文本内容

    print(result)

    '//li[@class="item-0"]/a/text()' a的文本内容

    其实@符号也能获取

    from lxml import etree

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

    result = html.xpath('//li/a/@href')

    print(result)

    通过@href即可获取节点的href属性。注意:此处和属性匹配的方法不同,属性匹配是

    中括号加属性后和值来限定某个属性,如【@href=‘kink1.html’】,而@href获取节点的某个属性

    当HTMl文本中li节点的class属性有两个值li和li-first,此时就要用 contains()函数了,

    //li[contains(@class,'li')]/a/text()与之相应是starts-with()函数

    //div[starts-with(@id,"test")]/text()

    string(.)的用法,string()函数会得到所指元素的所有节点文本内容,这些文本讲会被拼接成一个字符串。

    <div> <ul class="show">

    <li>275万购昌平邻铁三居 总价20万买一居</li>

    <li>00万内购五环三居 140万安家东三环</li>

    <li>北京首现零首付楼盘 53万购东5环50平</li>

    <li>京楼盘直降5000 中信府 公园楼王现房</li> </ul>

    </div>

    from lxml import etree ... >>>

    result = html.xpath("//div/ul[@class='show']")[0]

    >>>

    result.xpath('string(.)')

  • 相关阅读:
    Java 中的四种引用
    vue 移动端的开发
    使用java语言实现一个动态数组(详解)(数据结构)
    深度长文回顾web基础组件
    告诉你如何回答"线上CPU100%排查"面试问题
    超实用的mysql分库分表策略,轻松解决亿级数据问题
    【源码解析】凭什么?spring boot 一个 jar 就能开发 web 项目
    java中的守护线程
    Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)
    spring-data-redis-cache 使用及源码走读
  • 原文地址:https://www.cnblogs.com/wuheng-123/p/9386422.html
Copyright © 2020-2023  润新知