• 从0开始学爬虫3之xpath的介绍和使用


    从0开始学爬虫3之xpath的介绍和使用

    Xpath:一种HTML和XML的查询语言,它能在XML和HTML的树状结构中寻找节点

    安装xpath:

    pip install lxml

    HTML

    超文本标记语言(HyperText Mark-up Language),是一种规范,一种标准,是构成网页文档的主要语言

    URL

    统一资源定位器(Uniform Resource Locator),互联网上的每个文件都有一个唯一的URL,它包含的信息之处文件的位置以及浏览器应该怎么处理它

    Xpath的使用语法:

    获取文本:

    //标签1[@属性1=”属性值1”]/标签2[@属性2=”属性值2”]/…/text()

    获取属性值

    //标签1[@属性1=”属性值1”]/标签2[@属性2=”属性值2”]/…/@属性n

    使用pycharm虚拟环境安装xpath模块

    Xpath使用示例

    用来进行xpath测试的网页 static/index.html

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>网页测试</title>
        <link rel="stylesheet" href="">
    </head>
    <body>
        <h3>标题</h3>
        <ul>
            <li>内容1</li>
            <li>内容2</li>
            <li class="important">内容3important</li>
            <li>内容4</li>
            <li>内容5</li>
    
        </ul>
        <div>
            内容未知
        </div>
        <p>
            段落内容 from p
        </p>
        <div id="container">
            段落文字
            <a href="http://www.baidu.com" title="超链接">跳转到百度首页</a>
            <p class="content">
                区块内容1
            </p>
            <p class="content">
                区块内容2
            </p>
            <p class="content">
                区块内容3
            </p>
            <p class="content">
                区块内容4
            </p>
            <p class="content-block">
                区块内容5 from block
            </p>
            <p class="content-block">
                区块内容6 末尾内容
            </p>
            <a href="http://www.so.com" title="超链接">跳转到360搜索首页</a>
        </div>
        <p>
            最后一段文字
        </p>
    </body>
    </html>

    xpath使用示例

    #coding=utf-8
    from lxml import html
    
    def parse():
        """将html文件中的内容,使用xpath进行提取"""
        # 读取文件中的内容
        f = open('./static/index.html', 'r', encoding='utf-8')
        s = f.read()
    
        selector = html.fromstring(s)
        # 解析H3标题
        h3 = selector.xpath('/html/body/h3/text()')
        print(h3[0])
        # 解析ul下面的内容
        # ul = selector.xpath('/html/body/ul/li')
        # 双斜线语法
        ul = selector.xpath("//ul/li")
        print(len(ul))
        for li in ul:
            print(li.xpath('text()')[0])
    
        # 解析ul指定的元素值
        ul2 = selector.xpath('/html/body/ul/li[@class="important"]/text()')
        print(ul2)
    
        # 解析a标签的内容,拆分的方式
        # a = selector.xpath('//div[@id="container"]/a')
        # 标签内的内容
        # print(a[0].xpath("text()")[0])
        # 得到标签的属性
        # print(a[0].xpath("@href")[0])
        # div[id="container"] 的第二个a标签内容
        # print(a[1].xpath("text()"))
        # print(a[1].xpath("@href")[0])
    
        # 解析a标签的内容,一次性解析的方式
        a1 = selector.xpath('//div[@id="container"]/a/text()')
        # 标签内容
        print(a1[0])
        # 标签数学
        alink = selector.xpath('//div[@id="container"]/a/@href')
        print(alink[0])
    
        # 解析p标签
        p = selector.xpath('/html/body/p[last()]/text()')
        print(p[0])
        f.close()
    
    if __name__ == "__main__":
        parse()

    当我们在页面中找不到xpath的时候可以使用chrome的copy xpath进行参考

  • 相关阅读:
    Travis 编译使用 JDK 的版本
    《程序员的职业素养》读书笔记
    先做人,在做事
    CAP理论
    ZGC实践
    虚拟化技术的分类及介绍
    C# AD域验证登录
    dotnet core 3.1 站点发布成windows服务
    windows 服务无法调用office word COM接口
    Ext 动态加载js文件
  • 原文地址:https://www.cnblogs.com/reblue520/p/11150316.html
Copyright © 2020-2023  润新知