美文网首页
python 高频小套路

python 高频小套路

作者: 叶赛文 | 来源:发表于2019-01-02 20:57 被阅读17次

    1. 类,对象,属性,方法

    什么叫对象?
    对象就是客观世界中存在的人、事、物体等实体在计算机逻辑中的映射。
    万事万物,皆为对象。
    现实世界中,我们把万事万物叫做“事物”;计算机世界中,我们把万事万物叫做“对象”。
    事物:它看起来/闻起来怎么样(属性)?它怎么使用(方法)?
    比如炸鸡:金黄色,吃起来香(属性),可以放进在嘴里吃(方法)

    什么叫类?
    是创建对象的蓝图,描述了所创建的对象共同的属性和方法。
    调用属性和方法: 对象.属性 , 对象.方法

    def 定义函数(function) class 定义类(class)

    2. 类,对象,属性,方法的例子

    定义一个类:炎黄子孙。属性:头发是黑色,皮肤是黄色,是中华人。它有一个方法:血脉觉醒。调用这个方法的时候,屏幕上会打出参数。
    把秦王归为炎黄子孙类。
    调用秦王的头发,皮肤,中华人,看看秦王有哪些特征。
    用秦王调用血脉觉醒的方法,参数是“与子同袍”。

    class Yanhuangzisun():
        hair = 'black'
        skin = 'yellow'
        chinese = True
        def xuemaijuexing(self,words):
            print(words)
    qinwang = Yanhuangzisun()
    print(qinwang.hair) 
    print(qinwang.skin)       
    print(qinwang.chinese)
    qinwang.xuemaijuexing('与子同袍')
    

    3.什么是模块?

    一个模块就是一个py文件,里面有别人已经写好的类、方法、属性、函数、变量……

    4.什么是包(package)?

    一般来说,一个包会被专门用来解决一类问题。
    把模块分类存储,放进不同的文件夹。这种文件夹我们把它叫做包(package)。

    5.如何使用模块?

    0.下载需要的模块
    1.在自己的代码中引用该模块
    2.给模块输入参数,你得到一个对象
    3.借助这个对象的属性或方法完成项目

    6 获取网址https://static.pandateacher.com/sanguo.md的内容,并把它保存到 《三国》.txt的文件里。

    import requests
    sanguo = requests.get('https://static.pandateacher.com/sanguo.md')
    k = open('《赛文三国》.txt', 'a+')
    for words in sanguo.text:
        try:
            k.write(words)
        except:
            pass
        continue
    k.close()
    

    技能点1: 如何新建/打开文件。 用open。 a+以读写的方式打开
    技能点2:如何把文件保存。 write: fileObject.write([str])
    技能点3: try except 跳过异常
    技能点4:continue:跳过当前循环,相当于一个删除效果,删除不必要的东西。 break,跳出整个循环

    7. 1. 把网址1里的图片,保存到本地文件夹。

    网址1:http://images.xuejuzi.cn/1612/1_161230185104_1.jpg

    import requests
    response = requests.get('http://images.xuejuzi.cn/1612/1_161230185104_1.jpg')
    pic = open('photo1.jpg','wb')
    #图片内容,需要以二进制wb读写。你在学习open()函数时接触过它。
    #你看到这里的文件没加路径,它会被保存在程序运行的当前目录下。
    pic.write(response.content)
    #不同于.text是获取文本内容,.content是获取二进制内容,不会产生数据丢失或乱码。
    #这行代码,是将response写入pic内。
    

    8. 在QQ音乐上,选择歌手李宗盛,把他第一页20首歌曲,按照下图打印出来:

    image.png

    第16关

    import requests,json
    #引用json,json是一种跨平台的轻量级数据交换语言。这是一个系统预装模块,你不需要手动安装。
    url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=60997426243444153&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=%E5%91%A8%E6%9D%B0%E4%BC%A6&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0'
    #打开我们新抓取到的网址
    res = requests.get(url)
    #下载该网页,赋值给res
    jsonres = json.loads(res.text)
    #使用json来解析res.text
    music = jsonres['data']['song']['list']
    #一层一层地取字典,获取歌单的列表
    for x in music:
    #music是一个列表,x是它里面的元素
        print('歌名:'+x['name'])
        #以name为键,查找歌曲名。
        print('所属专辑:'+x['album']['name'])
        #查找专辑名
        print('播放时长:'+str(x['interval'])+'秒')
        #查找播放时长
        print('播放链接:https://y.qq.com/n/yqq/song/'+x['mid']+'.html\n\n')
        #查找播放链接
    

    9. 把QQ音乐上,李宗盛的前100首歌曲(前5页)的信息,都打印出来。

    image.png
    import requests,json
    
    for i in range(1,6):
        url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=67405590478770516&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=' + str(i) + '&n=20&w=%E6%9D%8E%E5%AE%97%E7%9B%9B&g_tk=385283523&loginUin=3002439522&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0'
        #print(url)
        res = requests.get(url)
        jsonres = json.loads(res.text)
        music = jsonres['data']['song']['list']
    
        for x in music:
            print('歌曲名:' + x['name'])
            print('专辑名:' + x['album']['name'])
            print('播放时长' + str(x['interval']) + '秒')
            print('播放链接:https://y.qq.com/n/yqq/song/' + x['mid'] +'.html\n\n' )
    

    10. 用Python获取阳光电影ygdy.com上电影《水形物语》的下载链接

    import requests,bs4
    #引用requests和bs4(BeautifulSoup4的缩写),如果没有安装bs4,可以使用pip install beautifulsoup4下载。
    from urllib.request import quote
    #quote函数,可以帮我们把内容转为标准的url格式,作为网址的一部分打开。
    movie = '水形物语'
    gbkmovie=movie.encode('gbk')
    #将汉字,用gbk格式编码,赋值给gbkmovie。
    urlmovie = 'http://s.ygdy8.com/plus/so.php?kwtype=0&searchtype=title&keyword='+quote(gbkmovie)
    #将gbk格式的内容,转为url,然后和前半部分的网址拼接起来。
    res =requests.get(urlmovie)
    #下载水形物语的搜索页面
    bsmovie = bs4.BeautifulSoup(res.text,'html.parser')
    #解析网页。
    link = bsmovie.select('.co_content8 b a')
    #查找目标。
    finallink = 'http://www.ygdy8.com' + link[0].get('href')
    #得到电影下载页的地址。
    xiazai = requests.get(finallink).content.decode('gbk')
    #使用requests模块,拿到电影下载页的源代码。使用content方法,拿到bytes数据,再进行decode,此时xiazai是字符串。
    bsxiazai = bs4.BeautifulSoup(xiazai,'html.parser')
    #解析网页。因为此时的xiazai已经是字符串,所以不需要加text。
    download = bsxiazai.select('table tbody tr a')
    #查找目标。
    for x in download:
        print (x.get('href'))
    

    11. 把豆瓣top250的电影名称,评分,推荐语都打印出来

    URL= https://movie.douban.com/top250

    import requests,bs4,time
    # 引入模块 requests(请求数据), bs4(HTML解析), time(任务执行时间控制)
    def printlist(url):
    #自定义一个函数,参数是URL
        list = requests.get(url)
        # 用requests模块,获取整个URL的页面,把值赋给list
        bslist = bs4.BeautifulSoup(list.text,'html.parser')
        # 用bs4模块里的BeautifulSoup函数,解析整个list的页面
        for x in range(25):
            movie = bslist.select('.grid_view li')[x]
            # 把所有的电影名字的列表选择
            bsmovie = bs4.BeautifulSoup(str(movie),'html.parser')
            #movie是tag对象,但str(movie)就可以作为字符串了。
            num_movie = bsmovie.select('em')
            # 选择出电影的排名.  值是:   [<em class="">23</em>]
            title_movie = bsmovie.select('a .title')
            # 选择出所有的名称:中文名称和英文名称。 值: [<span class="title">肖申克的救赎</span>, <span class="title"> / The Shawshank Redemption</span>]
            mark_movie = bsmovie.select('.rating_num')
            # 选出评分    值: [<span class="rating_num" property="v:average">9.6</span>]
            inq_movie = bsmovie.select('.inq')
            # 选出所有的推荐语   [<span class="inq">希望让人自由。</span>]
            print(num_movie[0].getText()+'. '+title_movie[0].getText()+'-'+mark_movie[0].getText()+'分')
            if len(inq_movie) != 0:
                print('推荐语:'+inq_movie[0].getText()+'\n\n')
    
    def fanye(num):
        # 定义一个翻页函数,参数是数字
        page = int(num/25)
        # 定义page变量的值
        for y in range(page):
            url = 'https://movie.douban.com/top250?start='+str(y*25)
            # 生成链接地址
            printlist(url)
            # 调用函数printlist, 输入的参数是url, 输出的是: 电影的相关信息
            time.sleep(2)
            # 反爬虫措施,每间隔2秒处理一下
    num = int(input('你想要输入多少个电影名单?请输入25的整数倍:')) 
    # 定义一个变量num, 里面的值是:要求输入一个数字,取整数       
    fanye(num)
    # 调用函数fanye, 参数是num   
    
    附注:
    print(movie)  #打印第一个movie的li结果
    <li>
    <div class="item">
    <div class="pic">
    <em class="">1</em>
    <a href="https://movie.douban.com/subject/1292052/">
    <img alt="肖申克的救赎" class="" src="https://img3.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg" width="100"/>
    </a>
    </div>
    <div class="info">
    <div class="hd">
    <a class="" href="https://movie.douban.com/subject/1292052/">
    <span class="title">肖申克的救赎</span>
    <span class="title"> / The Shawshank Redemption</span>
    <span class="other"> / 月黑高飞(港)  /  刺激1995(台)</span>
    </a>
    <span class="playable">[可播放]</span>
    </div>
    <div class="bd">
    <p class="">
                                导演: 弗兰克·德拉邦特 Frank Darabont   主演: 蒂姆·罗宾斯 Tim Robbins /...<br/>
                                1994 / 美国 / 犯罪 剧情
                            </p>
    <div class="star">
    <span class="rating5-t"></span>
    <span class="rating_num" property="v:average">9.6</span>
    <span content="10.0" property="v:best"></span>
    <span>1282196人评价</span>
    </div>
    <p class="quote">
    <span class="inq">希望让人自由。</span>
    </p>
    </div>
    </div>
    </div>
    </li>
    

    相关文章

      网友评论

          本文标题:python 高频小套路

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