• 爬虫---PyQuert简介


      今天写一篇最近刚学习的一个第3方库pyquery,pyquery比bs4,lxml更强大的一个网页解析工具。

    什么是pyQuery

    Pyquery是python的第3方库,PyQuery库也是一个非常强大又灵活的网页解析库,它提供了和jQuery 类似的语法来解析HTML 文梢,支持css 选择器,使用非常方便。Beautifu l Soup 一样,初始化PyQuery 的时候,也需要传入HTML 文本来初始化一个PyQue1y对象。它的初始化方式有多种,比如直接传入字符串,传入URL,传人文件名

    官方文档:http://pyquery.readthedocs.io/en/latest/

    安装PyQuery

    # pip安装
    pip install pyquery

     

    PyQuery使用

    写一个简单的html供下面学习

    text =
    '''
    <html> <body> <div id="test"> <ul class="list"> <li class="item-0"><a href="link1.html">今天天气</a></li> <li class="item-1"><a href="link2.html">明天天气</a></li> <li class="item-2"><a href="link3.html">后天天气</a></li> <li class="item-3"><a href="link4.html">周末天气</a></li> </ul> </div> </body> </html> '''

    基本css选择器

    # 导入pyquery
    from pyquery import PyQuery as pq
    # 创建对象
    doc = pq(text)
    # 通过css选择器先查找id再查找class
    item = doc('#test .list')
    print(item)
    
    代码结果:
    <ul class="list">
    <li class="item-0"><a href="link1.html">今天天气</a></li>
    <li class="item-1"><a href="link2.html">明天天气</a></li>
    <li class="item-2"><a href="link3.html">后天天气</a></li>
    <li class="item-3"><a href="link4.html">周末天气</a></li>
    </ul>

    查找子节点

    # 导入pyquery
    from pyquery import PyQuery as pq
    # 创建对象
    doc = pq(text)
    # 通过css选择器先查找id再查找class
    item = doc('#test .list')
    # 查找子节点li
    child = item.children('li')
    # 或者使用find()函数
    # child = item.find('li')
    print(child)
    
    代码结果:
    <li class="item-0"><a href="link1.html">今天天气</a></li>
    <li class="item-1"><a href="link2.html">明天天气</a></li>
    <li class="item-2"><a href="link3.html">后天天气</a></li>
    <li class="item-3"><a href="link4.html">周末天气</a></li>

    查找父节点

    # 导入pyquery
    from pyquery import PyQuery as pq
    # 创建对象
    doc = pq(text)
    # 通过css选择器先查找id再查找class
    item = doc('#test .list')
    # 查找父节点
    container = item.parent()
    print(container)
    
    代码结果:
    <div id="test">
    <ul class="list">
    <li class="item-0"><a href="link1.html">今天天气</a></li>
    <li class="item-1"><a href="link2.html">明天天气</a></li>
    <li class="item-2"><a href="link3.html">后天天气</a></li>
    <li class="item-3"><a href="link4.html">周末天气</a></li>
    </ul>
    </div>

    查找兄弟节点

    # 导入pyquery
    from pyquery import PyQuery as pq
    # 创建对象
    doc = pq(text)
    # 查找兄弟其中一个
    item = doc('.item-0')
    # 查找兄弟节点
    xiongdi = item.siblings('li')
    print(xiongdi)
    
    代码结果:
    <li class="item-1"><a href="link2.html">明天天气</a></li>
    <li class="item-2"><a href="link3.html">后天天气</a></li>
    <li class="item-3"><a href="link4.html">周末天气</a></li>

    遍历读取内容

    1、遍历读取a标签

    这个地方需要使用一个方法items(),使用该方法后得到一个生成器

    # 导入pyquery
    from pyquery import PyQuery as pq
    # 创建对象
    doc = pq(text)
    item = doc('.list a').items()
    for i in item:
        print(i)
    
    代码结果:
    <a href="link1.html">今天天气</a>
    <a href="link2.html">明天天气</a>
    <a href="link3.html">后天天气</a>
    <a href="link4.html">周末天气</a>

    2、获取href的值

    这个地方需要用到attr()方法

    # 导入pyquery
    from pyquery import PyQuery as pq
    # 创建对象
    doc = pq(text)
    item = doc('.list a').items()
    for i in item:
        print(i.attr('href'))
    
    
    代码结果:
    link1.html
    link2.html
    link3.html
    link4.html

    3、获取a标签下的文字

    通过调用text()方法来实现

    # 导入pyquery
    from pyquery import PyQuery as pq
    # 创建对象
    doc = pq(text)
    item = doc('.list a').items()
    for i in item:
        print(i.text())
    
    
    代码结果:
    今天天气
    明天天气
    后天天气
    周末天气

     下一篇通过简单的案例更加深刻的了解pyquery库~~~~

    写了一些简单的介绍,还是那一句话,方法多多种,喜欢那种用那种~~~大家喜欢的话,也可以点个关注哈

  • 相关阅读:
    vivado 连接不上板子 There is no current hw_target
    excel 方框打钩
    2019新个税如何计算
    printf("loops %u / %u%c[K ", loops + 1, opts->loops, 27); printf("%cM", 27);
    HttpUtil
    Spring注入bean和aop的注意事项
    获取所有bean的名字
    不可见类有抽象父类,spring配置子类bean,注入父类,aop就可以切父类的方法
    实例/静态工厂方法得到bean
    注入抽象类的子类
  • 原文地址:https://www.cnblogs.com/qican/p/11209043.html
Copyright © 2020-2023  润新知