zoukankan      html  css  js  c++  java
  • 爬虫---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库~~~~

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

  • 相关阅读:
    使用uwsgi --http :80 --wsgi-file test.py 在浏览器上无法访问(头疼了我一天)
    linux部署django启动项目报错误
    linux python3使用最新sqlite3版本
    linux上部署python本地开发环境
    Linux下安装Python3.9.0
    python上传图片到本地
    Python:手机号码验证
    PHP 自带的加密解密函数
    html中或者app中在线预览word文档,PDF,PPT
    Python 列表解析
  • 原文地址:https://www.cnblogs.com/qican/p/11209043.html
Copyright © 2011-2022 走看看