zoukankan      html  css  js  c++  java
  • 爬虫神器xpath的用法(一)

    1、如果你没有安装lxml,请运行pip install lxml或者easy_install lxml安装,如果在安装过程中失败的话,

    是因为lxml需要依赖某些库文件,具体可以问下度娘,这里不再赘述。

    2、安装成功后,请看下面测试代码

    //:定位根节点
    /:往下层寻找
    /text(): 提取文本内容
    /@xxx: 提取属性内容

    #encoding=utf-8
    from lxml import etree
    html = '''
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>测试-常规用法</title>
    </head>
    <body>
    <div id="content">
        <ul id="useful">
            <li>这是第一条信息</li>
            <li>这是第二条信息</li>
            <li>这是第三条信息</li>
        </ul>
        <ul id="useless">
            <li>不需要的信息1</li>
            <li>不需要的信息2</li>
            <li>不需要的信息3</li>
        </ul>
        <div id="url">
            <a href="http://www.meilishuo.com">美丽说</a>
            <a href="http://www.meilishuo.com" title="美丽说流行款">美丽说只做正确流行款</a>
        </div>
    </div>
    </body>
    </html>
    '''
    selector = etree.HTML(html)
    
    #提取文本,获取根目录下div且id=content下面的ul且id=useful的文本内容
    content = selector.xpath('//div[@id="content"]/ul[@id="useful"]/li/text()')
    for each in content:
        print each
    
    #提取属性 获取根目录下a标签且属性为href的内容,如果不指定则返回为list
    link = selector.xpath('//a/@href')
    print link
    
    title = selector.xpath('//a/@title')
    print title[0]

    将打印出如下信息:

    //提取文本属性的输出:

    这是第一条信息
    这是第二条信息
    这是第三条信息

    //提起属性的输出:
    ['http://www.meilishuo.com', 'http://www.meilishuo.com']
    美丽说流行款

  • 相关阅读:
    JAVA中变量的类型及命名规范
    JAVA、JDK等入门概念,下载安装JAVA并配置环境变量
    大家好,我是一个JAVA初学者,想在这里记下自己学习过程中的点点滴滴,请多多关照
    多线程并发问题解决之redis锁
    设计模式之动态代理
    设计模式之静态代理
    spring之IOC模拟实现
    spring boot+kafka整合
    metrics+spring+influxdb整合
    MongoError: no primary found in replicaset
  • 原文地址:https://www.cnblogs.com/gide/p/5246664.html
Copyright © 2011-2022 走看看