分享

PyQuery 库学习笔记(文末有免费好看的数据分析直播课推荐)

 aloha52o 2017-09-23

蒋蜀黍Python爱好者社区专栏作者

博客地址:https://ask./blog/JiangYiXin

1、初始化

1.1、字符串初始化

frompyquery importPyQuery aspy

html = '''

   

       
  • first item

  •        
  • second item

  •        
  • third item

  •        
  • fourth item

  •        
  • fifth item

  •    

    '''

    doc = py(html)
    print(doc('li'))

    1.2、URL初始化

    frompyquery importPyQuery aspy

    # 通过URL来获取
    doc = py(url='http://www.baidu.com')
    #
    print(type(doc('title')))
    # 输出选中的head标签
    print(doc('head'))

    1.3、文件的初始化

    frompyquery importPyQuery aspy

    # 通过文件来获取
    doc = py(filename='demo1.html')
    #
    print(type(doc('li')))
    # 输出所有的li标签
    print(doc('li'))

    2、基本的CSS选择器

    frompyquery importPyQuery aspy

    html = '''

       

           
  • first item

  •        
  • second item

  •        
  • third item

  •        
  • fourth item

  •        
  • fifth item

  •    

    '''

    doc = py(html)
    # 选中idcontainer中的classlist中的li标签
    print(doc('#container .list li'))

    3、查找元素

    3.1、子元素

    frompyquery importPyQuery aspy

    html = '''

       

           
  • first item

  •        
  • second item

  •        
  • third item

  •        
  • fourth item

  •        
  • fifth item

  •    

    '''
    doc = py(html)
    # 获取classlist的元素
    items = doc('.list')
    #
    print(type(items))
    print(items)
    # 在先前找到的元素中获取li标签
    lis = items.find('li')
    #
    print(type(lis))
    print(lis)
    # 获取先前找到的元素中的所有子元素
    lis2 = items.children()
    print(type(lis2))
    print(lis2)
    # 获取先前找到的元素中的class为active的元素
    li3 = items.children('.active')
    print(li3)

    3.2、父元素

    frompyquery importPyQuery aspy

    html = '''

       

           
  • first item

  •        
  • second item

  •        
  • third item

  •        
  • fourth item

  •        
  • fifth item

  •    

    '''
    doc = py(html)
    # 获取classlist的元素
    items = doc('.list')
    # 获取所选元素的父元素
    container = items.parent()
    print(type(container))
    print(container)
    print('==========================')
    # 获取所选元素的所有父元素
    parents = items.parents()
    print(type(parents))
    print(parents)
    print('==========================')
    # 获取所选元素的所有父元素中classcontainer的元素
    parent = items.parents('.container')
    print(parent)

    3.3、兄弟元素

    frompyquery importPyQuery aspy

    html = '''

       

           
  • first item

  •        
  • second item

  •        
  • third item

  •        
  • fourth item

  •        
  • fifth item

  •    

    '''
    doc = py(html)
    # 获取classlist的元素
    items = doc('.list')
    li = doc('.list .item-0.active')
    # 查找选中元素的所有兄弟元素(不包含自己)
    print(li.siblings())
    # 查找选中元素的所有兄弟元素中classactive的元素(不包含自己)
    print(li.siblings('.active'))



    4、遍历

    4.1、单个元素

    frompyquery importPyQuery aspy

    html = '''

       

           
  • first item

  •        
  • second item

  •        
  • third item

  •        
  • fourth item

  •        
  • fifth item

  •    

    '''
    doc = py(html)

    # 选中单个单个元素
    li = doc('.item-0.active')
    print(li)

    4.2、多个元素

    frompyquery importPyQuery aspy

    html = '''

       

           
  • first item

  •        
  • second item

  •        
  • third item

  •        
  • fourth item

  •        
  • fifth item

  •    

    '''
    doc = py(html)

    # 查找所有li标签
    lis = doc('li').items()
    #
    print(type(lis))
    forli inlis:
       print(li)



    5、获取信息

    5.1、获取属性

    frompyquery importPyQuery aspy

    html = '''

       

           
  • first item

  •        
  • second item

  •        
  • third item

  •        
  • fourth item

  •        
  • fifth item

  •    

    '''
    doc = py(html)
    a = doc('.item-0.active a')
    # third item
    print(a)
    # link3.html    获取选中标签的href属性
    print(a.attr('href'))
    # link3.html
    print(a.attr.href)

    5.2、获取文本

    frompyquery importPyQuery aspy

    html = '''

       

           
  • first item

  •        
  • second item

  •        
  • third item

  •        
  • fourth item

  •        
  • fifth item

  •    

    '''
    doc = py(html)
    a = doc('.item-0.active a')
    # third item
    print(a)
    # 获取a标签的内容
    print(a.text())

    5.3、获取HTML

    frompyquery importPyQuery aspy

    html = '''

       

           
  • first item

  •        
  • second item

  •        
  • third item

  •        
  • fourth item

  •        
  • fifth item

  •    

    '''
    doc = py(html)
    li = doc('.item-1.active')
    #
  • fourth item

  • print(li)
    # 获取li标签的HTML
    print(li.html())



    6、DOM操作

    6.1、addClass、removeClass

    frompyquery importPyQuery aspy

    html = '''

       

           
  • first item

  •        
  • second item

  •        
  • third item

  •        
  • fourth item

  •        
  • fifth item

  •    

    '''
    doc = py(html)
    li = doc('.item-0.active')
    print(li)
    # 移除class
    li.removeClass('active')
    print(li)
    # 添加class
    li.addClass('active')
    print(li)

    6.2、attr、css

    frompyquery importPyQuery aspy

    html = '''

       

           
  • first item

  •        
  • second item

  •        
  • third item

  •        
  • fourth item

  •        
  • fifth item

  •    

    '''
    doc = py(html)
    li = doc('.item-0.active')
    print(li)
    # 添加name属性
    li.attr('name', 'link')
    print(li)
    # 添加css样式
    li.css('font-size', '14px')
    print(li)

    6.3、remove

    frompyquery importPyQuery aspy

    html = '''

       Hello, World
       

    This is a paragraph.



    '''
    doc = py(html)
    wrap = doc('.wrap')
    print(wrap.text())
    # 在选择的元素中找到p标签并移除
    wrap.find('p').remove()
    print(wrap.text())

    6.4、其他DOM方法

    http://pyquery./en/latest/api.html



    7、伪类选择器

    frompyquery importPyQuery aspy

    html = '''

       

           

               
  • first item

  •            
  • second item

  •            
  • third item

  •            
  • fourth item

  •            
  • fifth item

  •        
       

    '''

    doc = py(html)
    # 找到第一个li
    li = doc('li:first-child')
    print(li)
    # 找到最后一个li
    li = doc('li:last-child')
    print(li)
    # 找到第二个li
    li = doc('li:nth-child(2)')
    print(li)
    # 找到第三个到最后的li
    li = doc('li:gt(2)')
    print(li)
    # 找到第偶数个li
    li = doc('li:nth-child(2n)')
    print(li)
    # 找到内容包含secondli
    li = doc('li:contains(second)')
    print(li)

    更多的选择器 

    http://www.w3school.com.cn/css/index.asp



    8、官方文档

    http://pyquery./


    关注公众号,“Python爱好者社区”,回复“爬虫”即可获取爬虫免费学习视频。


    Python爱好者社区


    为大家提供与Python相关的最新技术和资讯。


      本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多