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总结
原文地址:https://www.cnblogs.com/zhuluqing/p/8479968.html