• pyquery模块


    #_*_coding:utf-8_*_
    __author__ = 'Linhaifeng'
    
    '''
    强大而又灵活的网页解析库,如果你觉得正则写起来太麻烦,如果你觉得beutifulsoup
    语法太难记,如果你熟悉jquery的语法,那么pyquery是最佳选择
    
    
    安装pyquery
    pip3 install pyquery
    '''
    
    html='''
    </div><div class="account-signin">
        <ul class="navigation menu" aria-label="Social Media Navigation">
            哈哈哈
            <li class="tier-1 last" aria-haspopup="true">
    
                <a href="/accounts/login/" title="Sign Up or Sign In to Python.org">Sign In</a>
                <ul class="subnav menu">
                    <li class="tier-2 element-1" role="treeitem"><a href="/accounts/signup/">Sign Up / Register</a></li>
                    <li class="tier-2 element-2" role="treeitem"><a href="/accounts/login/">Sign In</a></li>
                </ul>
    
            </li>
        </ul>
    </div>
    '''
    
    
    #用法:
    
    #1===========>初始化
    #===>字符串初始化
    # from pyquery import PyQuery as pq
    # doc=pq(html)
    # print(doc('.tier-2')) #默认就是css选择器
    
    #===>url初始化
    # from pyquery import PyQuery as pq
    # doc=pq(url='http://www.baidu.com')
    # print(doc('head'))
    
    #===>文件初始化
    # from pyquery import PyQuery as pq
    # doc=pq(filename='demo.html')
    # print(doc('li'))
    
    
    #2===========>基本css选择器
    from pyquery import PyQuery as pq
    doc=pq(html)
    # print(doc('.tier-2')) #默认就是css选择器
    
    #查找元素
    
    #子元素
    # print(doc('li').find('li')) #这里的find是查找所有,但是不一定是直接子元素
    # print('==>',doc('li').children('li')) #查找直接子元素
    
    
    #父元素
    # print(doc('.tier-2').parent())
    
    #祖先元素:爹,爹的爹
    # print(doc('.tier-2').parents())
    # print(doc('.tier-2').parents('.account-signin')) #从祖先里筛选
    
    #先补充:并列选择
    # print(doc('.tier-1 .tier-2'))
    # print(doc('.tier-1 .tier-2.element-1'))
    
    #兄弟元素
    # print(doc('.tier-2.element-1').siblings())
    # print(doc('.tier-2.element-1').siblings('li a'))
    
    
    
    
    
    
    
    #3===========>遍历
    
    # lis=doc('li').items()
    # print(lis)
    #
    # for i,j in enumerate(lis):
    #     print(i,j)
    
    #4===========>获取属性
    # print(doc('li').attr('class'))
    # print(doc('a').attr.href)
    
    
    # 5===========>获取文本
    # print(doc('a').text())
    
    #6===========>获取html
    # print(doc('.subnav.menu'))
    # print(doc('.subnav.menu').html())
    
    
    #7===========>DOM
    #addclass,removeclass
    # tag=doc('.subnav.menu')
    # print(tag)
    #
    # tag.addClass('active')
    # print(tag)
    #
    # tag.removeClass('active')
    # print(tag)
    
    
    # tag=doc('.tier-2.element-1 a')
    # tag.attr('name','link')
    # tag.css('font-size','14px')
    # print(tag)
    
    
    tag=doc('.navigation.menu')
    # print(tag.text()) #获取的是tag下所有的文本,
    
    tag.find('li').remove()
    print(tag.text()) #如果指向获取url下的那个"哈哈哈",则需要先删除li
    
    #8===========>pyquery官网
    
    
    # http://pyquery.readthedocs.io/en.latest/api.html
    
    
    #9===========>伪类选择器
    
    print(doc('li:first-child')) #选择li标签的第一个
    print(doc('li:last-child')) #选择li标签的最后一个
    print(doc('li:nth-child(2)')) #选择li标签的第2个
    print(doc('li:gt(2)')) #选择li标签第2个以后的
    print(doc('li:nth-child(2n)')) #选择li标签的偶数标签
    print(doc('li:nth-child(2n+1)')) #选择li标签的奇数标签
    print(doc('li:contains(second)')) #选择li标签中包含second文本的标签
    
    #更多css选择器可以查看
    # http://www.w3school.com.cn/css/index.asp
    
    #官网:http://pyquery.readthedocs.io/
  • 相关阅读:
    原生js可爱糖果数字时间特效
    jQuery绑定事件的四种方式
    jQuery选择器总结
    正则表达式
    this对象
    网页瀑布流效果实现的几种方式
    关于DOM
    SparkSQL读写外部数据源--数据分区
    SparkSQL读写外部数据源-通过jdbc读写mysql数据库
    SparkSQL读写外部数据源-基本操作load和save
  • 原文地址:https://www.cnblogs.com/HomeG/p/10519327.html
Copyright © 2020-2023  润新知