python爬虫系列四:html解析大法-lxml-xpath

Xpath原本是在可扩展标记语言XML中进行数据查询的一种描述语言,可以很方便的在XML文档中查 询到具体的数据;后续再发展过程中,对于标记语言都有非常友好的支持,如超文本标记语言HTML。
正如在python中有一个内置的re模块用来支持正则表达式
语法一样,python中有一个第三方的lxml模块,可以方便
的支持Xpath的各种操作,可以友好的解析Xpath语法,使
其用于在程序中进行结构化数据筛选。
安装命令: pip install lxml

XPath常用规则

python爬虫系列四:html解析大法-lxml-xpath_第1张图片
python爬虫系列四:html解析大法-lxml-xpath_第2张图片
python爬虫系列四:html解析大法-lxml-xpath_第3张图片
python爬虫系列四:html解析大法-lxml-xpath_第4张图片
python爬虫系列四:html解析大法-lxml-xpath_第5张图片
python爬虫系列四:html解析大法-lxml-xpath_第6张图片

案例

etree大部分节点都在这个函数里面

from lxml import etree

html_DOC="""

    
       春晚
    
    
       

个人简介

姓名:小岳岳

住址:中国 河南

代表作:五环之歌

"""
#初始化 html=etree.HTML(html_DOC) #print(type(html)) # 获取的网页只有转化etree的格式才能被xpath解析 #(1) 查询html中div标签下的所有的p标签 print(html.xpath("//div/p")) #三个标签p是以列表形式展现出来:[, , ] #(2) 查询第二个p标签的name属性值 print(html.xpath("//div/p[2]/@name")) #加属性值必须是用@:['addr'] #(3)查询div下的p标签下的span标签内容 print(html.xpath("//div/p/span")[0].text) #"//div/p/span"得到的结果是[],内容是Element元素,列表获取第一个元素,转化成text格式:小岳岳 #(4)查询body标签下的h1标签的name属性值 print(html.xpath("//body/h1/@name")) #['title'] #(5)查询所有的包含name属性,并且name属性值为desc的标签 print(html.xpath("//*[@name='desc']")) #查询所有的用* #name='desc'是谓语,放在[]里 #属性值用@ #[] #(6)查询第一个p标签内的所有文本数据 #string():获取包括子孙标签在内的所有文本数据 #text:只能获取该标签下的文本,不包括子孙标签的文本 print(html.xpath('string(//p[1])')) print(html.xpath("//p[1]")[0].text) #只能获取第一个元素:姓名:

你可能感兴趣的:(python爬虫)