美文网首页
(二)PyQuery 知识点及应用(猫眼TOP100榜单:文字加

(二)PyQuery 知识点及应用(猫眼TOP100榜单:文字加

作者: 机器视觉CV_有三言选 | 来源:发表于2018-08-13 20:48 被阅读0次

    1.初始化

    • 字符串初始化(常用

    以一段HTML字符串初始化

    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'))
    

    运行结果:

    <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>
    
    • URL初始化

    传入网页的URL,PyQuery对象会先请求网页,返回网页源代码(字符串形式)来初始化。

    import pyquery
    url = 'http://maoyan.com/board/4'
    doc = pyquery.PyQuery(url=url)
    print(doc('title'))
    

    运行结果

    <title>TOP100榜 - 猫眼电影 - 一网打尽好电影</title>
    
    • 文件初始化
      以本地保存的文件作为参数
    from pyquery import PyQuery as pq
    doc = pq(filename='demo.html')
    print(doc('li'))
    

    2.CSS知识

    CSS

    3.查找节点

    #find()方法
    
    
    
    #children()方法
    
    #parent()方法
    
    #parents()方法
    
    #siblings()方法
    
    

    4.遍历

    item()方法 当选择的结果中包含多个结果时使用

    5.获取信息

    • 获取属性
    attr() #获取节点的属性,返回的结果是第一个符合的结果
    
    • 获取文本
    text() #获取节点的文本,返回的结果是所有符合的结果,无需再使用遍历
    html() #获取HTML文本,返回第一个符合的结果
    
    • 区分

    attr()、text()、html()有无参数的区别

    attr(参数1) #获取节点的该属性(参数1)的属性值
    
    attr(参数1,参数2) #把属性:参数1  的属性值改为(参数2)
    

    例子:

        li.attr('name') #获取li节点name属性的属性值
        li.attr('name','link') #若存在name属性,则把name属性的属性值改为'link'
        若不存在name属性,则添加属性name,其属性值为’link'
    

    text()、html()无参数时是获取该节点内的纯文本和HTML文本,有参数是,则进行赋值

    6.节点操作

    addClass() #添加节点的class属性
    removeClass() #移除节点的某个属性
    

    7.伪类选择器

    print(doc('li:first-child') #选取第一个li节点
    
    

    例程(猫眼TOP100榜:文字加图片)

    程序

    import requests
    import pyquery
    import re
    url = 'http://maoyan.com/board/4'
    
    headers = {
         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
    }
    
    html = requests.get(url, headers=headers).text
    doc = pyquery.PyQuery(html)
    contents = doc('.board-wrapper')
    
    indexs = contents.find('.board-index').items()
    names = contents.find('.name').items()
    stars = contents.find('.star').items()
    releasetimes = contents.find('.releasetime').items()
    integers = contents.find('.integer').items()
    fractions = contents.find('.fraction').items()
    image_contents = contents('img[data-src^="http://"]') #获取data-src属性值以“http://"”开头的img节点
    images = re.findall('data-src="(.*?)"', str(image_contents))#正则表达式匹配图片的链接     注意find()的第二个参数是str(image_contents)
    for index, name, star, releasetime, integer, fraction, image in zip(indexs, names, stars, releasetimes, integers, fractions, images):
        print(index.text(), name.text(), star.text()[3:], releasetime.text()[4:], str(integer.text())+str(fraction.text()))
        images_data = requests.get(str(image)).content
        with open(str(index.text())+str(name.text())+'.jpg', 'wb') as f:
            f.write(images_data)
    #以排名+电影名进行命名,注意使用的是index.text()和name.text()方法,index 和 name的数据类型是generator
    

    结果:文字加图片保存到本地

    1 霸王别姬 张国荣,张丰毅,巩俐 :1993-01-01(中国香港) 9.6
    2 肖申克的救赎 蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿 :1994-10-14(美国) 9.5
    3 罗马假日 格利高里·派克,奥黛丽·赫本,埃迪·艾伯特 :1953-09-02(美国) 9.1
    4 这个杀手不太冷 让·雷诺,加里·奥德曼,娜塔莉·波特曼 :1994-09-14(法国) 9.5
    5 教父 马龙·白兰度,阿尔·帕西诺,詹姆斯·肯恩 :1972-03-24(美国) 9.3
    6 泰坦尼克号 莱昂纳多·迪卡普里奥,凯特·温丝莱特,比利·赞恩 :1998-04-03 9.5
    7 龙猫 日高法子,坂本千夏,糸井重里 :1988-04-16(日本) 9.2
    8 唐伯虎点秋香 周星驰,巩俐,郑佩佩 :1993-07-01(中国香港) 9.2
    9 千与千寻 柊瑠美,入野自由,夏木真理 :2001-07-20(日本) 9.3
    10 魂断蓝桥 费雯·丽,罗伯特·泰勒,露塞尔·沃特森 :1940-05-17(美国) 9.2
    
    TIM截图20180813204549.jpg

    相关文章

      网友评论

          本文标题:(二)PyQuery 知识点及应用(猫眼TOP100榜单:文字加

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