解析库的使用

 


使用XPath

  XPath,全称XML Path Language,即XML路径语言,它是一门在xml文档中查找信息的语言。它最初是用来搜寻XML文档的,但是它同样使用于HTML文档的搜索。

  所以在做爬虫时,我们完全可以使用XPath来做相应的信息抽取。

XPath 常用规则


    表  达  式    描  述


    nodename      选取此节点的所有节点

    /            从当前节点选取直接子节点

    //         从当前节点选取子孙节点

    .             选取当前节点

    ..         选取当前节点的父节点

    @          选取属性


 

 

例如://title[@lang="eng"]

这就是一个规则,它代表选择所有名称为title,同时书属性lang的值为eng的节点。

准备工作

  使用之前,首先要确保安装好lxml库,window下命令行下输入 pip3 install lxml 

实例引入

  现在通过实例来感受一下XPath来对网页解析的过程,相关的代码如下:

复制代码
text = '''
<div>
    <ul>
        <li class='item-0'><a href="link1.html">frist 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>
    </ul>
</div>
'''
# 调用HTML进行初始化,构造XPath解析对象
html = etree.HTML(text)
result = etree.tostring(html)
print(result.decode('utf8'))
复制代码

结果:

复制代码
<html><body><div>
    <ul>
        <li class="item-0"><a href="link1.html">frist 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>
</body></html>
复制代码

这里我们调用tostring()方法输出修正后的html代码(注意最上面的html最后的一个li节点是没有闭合的),但是结果是byte类型的。这里利用decode()方法将其转成str类型。

 

posted @   Jervey  阅读(276)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示