zoukankan      html  css  js  c++  java
  • lxml解析html与元素定位

    lxml、beautifulsoup和正则表达式都可以解析定位html元素。前两者中,lxml比beautifulsoup效率高,所以采用lxml解析html。

    方法:

    from lxml import html

    tree=html.fromstring(response.text)

    此时tree是一个HtmlElement对象,就可以查找定位元素了。

    1.定位元素

    element=tree.xpath('//span[@id="idname"]')

    2.获取元素文本

    element.text

    3.获取元素所有属性字典

    element.attrib  返回一个字典包含该元素的所有属性

    4.获取元素的指定属性

    element.get('href')

    5.关于preceding-sibling:: 和 following-sibling:::

    preceding-sibling::前缀表示同一层的上一个节点。
    following-sibling::前缀表示同一层的下一个节点。
    following-sibling:: 就是任意下一个节点,而 “following-sibling::u” 就是下一个u节点。
    preceding-sibling:: 同理。

    sbs = page.xpath('//body//following-sibling::a')
    for sb in sbs:
        print(sb.tag)
        # 打印:a a a a a a ...
    
    sbs = page.xpath('//body/h1/following-sibling::*')
    for sb in sbs:
        print(sb.tag)
        # h1 下,所有 h1 同级的子节点(标签)
        # 打印:p p a a a a ...
    
    sbs = page.xpath('//body/h1/preceding-sibling::*')
    for sb in sbs:
        print(sb.tag)
        # h1 上,所有 h1 同级的子节点(标签)
        # 打印: p、meta、title、meta、meta

    内容出处:lxml总结
  • 相关阅读:
    (八)shell 计算命令
    (七)shell内建命令
    (六)shell数组深入解析
    (五)shell字符串深入解析
    输出链表的倒数第K个值
    反转链表
    调整该数组中数字的顺序,奇数在前,偶数在后
    基类与派生类的对象调用
    printf以%d形式输出浮点数的问题
    数值的整数次方
  • 原文地址:https://www.cnblogs.com/zhuluqing/p/8479968.html
Copyright © 2011-2022 走看看