lxml模块

1、lxml介绍

lxml是一个HTML/XML的解析器,主要的功能是如何解析和提取HTML/XML数据。

2、lxml解析HTML代码:

可以用来解析HTML代码,并且在解析HTML代码的时候,如果代码不规范,会自动进行补全。

#导入包
form lxml import etree
text='''<div>
    <ul>
         <li class="item-0"><a href="link1.html">first item</a></li>
         <li class="item-1"><a href="link2.html">second item</a></li>
         <li class="item-inactive"><a href="link3.html">third item</a></li>
         <li class="item-1"><a href="link4.html">fourth item</a></li>
         <li class="item-0"><a href="link5.html">fifth item</a> # 注意,此处缺少一个 </li> 闭合标签
     </ul>
 </div>
'''
#利用etree.HTML将字符串解析为HTML文档
html=etree.HTML(text)
result=etree.tostring(html)#将字符串序列化为HTML文档

3、html文件读取

#从文件中读取html代码:利用etree.parse()方法
from lxml import etree
html=etree.parse('xx.html')#读取外部文件xx.html
result=etree.tostring(html,pretty_print=True)
print(result)

4、在lxml中使用xpath语法:

    4.1获取所有li标签

from lxml import etree
text='''<div>
    <ul>
         <li class="item-0"><a href="link1.html">first item</a></li>
         <li class="item-1"><a href="link2.html">second item</a></li>
         <li class="item-inactive"><a href="link3.html"><span class="bold">third item</span></a></li>
         <li class="item-1"><a href="link4.html">fourth item</a></li>
         <li class="item-0"><a href="link5.html">fifth item</a></li>
     </ul>
 </div>
'''
html=etree.HTML(text)
lis=html.xpath("//li")
print(lis)

    4.2获取所有li元素下的所有class属性的值

result=html.xpath("//li/@class")

    4.3获取li标签下href为www.baidu.com的a标签:

result=html.xpath("//li/a[@href='www.baidu.com']")

    4.4获取li标签下所有span标签:

result=html.xpath("//li/span")

    4.5获取li标签下的a标签里的所有class:

result=html.xpath("//li/a//@class")

    4.6获取最后一个li 的a的href属性对应的值:

result=html.xpath("//li[last()]/a/@href")

    4.7获取倒数第二个li元素的内容

第一种方法:result=html.xpath("//li[last()-1]/a")
第二种方法:result=html.xpath("//li[last()-1]/a/text()")

猜你喜欢

转载自blog.csdn.net/weixin_36407399/article/details/83450872