美文网首页
pyquery简介

pyquery简介

作者: 小T数据站 | 来源:发表于2019-10-09 18:21 被阅读0次

    1. 初始化

    • 字符串初始化
    html = '''
    <div>
        <ul>
             <li class="item-0">first item</li>
             <li class="item-1"><a href="link2.html">second item</a></li>
             <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
             <li class="item-1 active"><a href="link4.html">fourth item</a></li>
             <li class="item-0"><a href="link5.html">fifth item</a></li>
         </ul>
     </div>
    '''
    
    from pyquery import PyQuery as pq
    doc = pq(html)
    print(doc('li'))
    
    • URL初始化
    doc = pq(url='http://cuiqingcai.com')
    
    • 文件初始化
    doc = pq(filename='demo.html')
    

    2. 基本CSS选择器

    doc = pq(html)
    print(doc('#id值 .class值 节点值'))
    

    3. 查找节点

    • 子节点
    doc = pq(html)
    items =doc('.list')
    lis = items.find('li')
    

    find()的查找范围是节点的所有子孙节点,children()只查找子节点

    lis = items.children()
    

    如果要筛选所有子节点中符合条件的节点,比如想筛选出子节点中class为active的节点,可以向children()方法传入CSS选择器.active:

    lis = items.children('.active')
    
    • 父节点
    html = '''
    <div class="wrap">
        <div id="container">
            <ul class="list">
                 <li class="item-0">first item</li>
                 <li class="item-1"><a href="link2.html">second item</a></li>
                 <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
                 <li class="item-1 active"><a href="link4.html">fourth item</a></li>
                 <li class="item-0"><a href="link5.html">fifth item</a></li>
             </ul>
         </div>
     </div>
    '''
    
    from pyquery import PyQuery as pq
    doc = pq(html)
    items = doc('.list')
    container = items.parent()
    
    • 祖先节点可用parents()方法
    • 如果想要筛选某个祖先节点的话,可以向parents()方法传入CSS选择器,这样就会返回祖先节点中符合CSS选择器的节点
    • 兄弟节点
    doc = pq(html)
    li = doc('.list .item-0.active')
    print(li.siblings())
    
    • 如果要筛选某个兄弟节点,我们依然可以向siblings方法传入CSS选择器,这样就会从所有兄弟节点中挑选出符合条件的节点了

    4. 遍历

    对于多个节点的结果,我们就需要遍历来获取。例如,这里把每一个li节点进行遍历,需要调用items()方法:

    doc = pq(html)
    lis = doc('li').items()
    print(type(lis))
    for li in lis:
        print(li, type(li))
    

    5. 获取信息

    • 获取属性
    doc = pq(html)
    a = doc('.item-0.active a')
    print(a.attr('href'))
    print(a.attr.href)
    

    假如符合条件的a节点有多个,则需要进行遍历:

    from pyquery import PyQuery as pq
    doc = pq(html)
    a = doc('a')
    for item in a.items():
        print(item.attr('href'))
    
    • 获取文本
    doc = pq(html)
    a = doc('.item-0.active a')
    print(a.text())
    

    如果想要获取这个节点内部的HTML文本,就要用html()方法:

    print(li.html())
    

    假设选中的是多个节点,html()方法会返回第一个节点的html文本,而text()方法会返回所有节点内部的纯文本,并用一个空格隔开,即返回的是一个字符串。

    6. 节点操作

    举一个有用的比较多的节点操作的例子:

    <div class="wrap">
        Hello, World
        <p>This is a paragraph.</p>
     </div>
    '''
    from pyquery import PyQuery as pq
    doc = pq(html)
    wrap = doc('.wrap')
    print(wrap.text())  # 1
    wrap.find('p').remove()
    print(wrap.text())  # 2
    

    1处提取出来的文本是:
    Hello, World This is a paragraph.
    2处提取出来的文本是:
    Hello, World
    更多节点操作的方法http://pyquery.readthedocs.io/en/latest/api.html

    7. 伪类选择器

    CSS选择器之所以强大,还有一个很重要的原因,那就是它支持多种多样的伪类选择器,例如选择第一个节点、最后一个节点、奇偶数节点、包含某一文本的节点等。
    关于CSS选择器的更多用法,可以参考http://www.w3school.com.cn/css/index.asp


    以上总结于崔庆才的《python3网络爬虫开发实战》

    相关文章

      网友评论

          本文标题:pyquery简介

          本文链接:https://www.haomeiwen.com/subject/yjbgpctx.html