美文网首页
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 高频小套路

    1. 类,对象,属性,方法 什么叫对象?对象就是客观世界中存在的人、事、物体等实体在计算机逻辑中的映射。万事万物,...

  • 元学习总结

    高频小套路 找到高手中的高手(比你厉害十倍)问他们要某一领域的高频小套路——然后全然不分析的练习——去补充事实型的...

  • 三九投资北京私下分享会复盘

    ?001 投资背后的东西 如何学习一项技能 (1)向真正的内行请教 (2)获取高频小套路 ----------- ...

  • 新领域学习的框架

    高频小套路是什么? 我觉得就是某个技能学习中,别人总结的最核心、最重要、最常出现的20%的方法。套路来源只有一个就...

  • 从xdite学习方法论的角度探讨学习滑雪

    存在高频小套路:教练教一小时你就可以从零基础开始学会基本套路:站稳,减速,转向。 你可以迅速形成肌肉记忆:上坡很快...

  • 用游戏来改变生活

    从16年到现在,互联网思维有三个关键词:刚需,痛感和高频。而游戏中恰好就使用了很多的高频小套路。我们说玩物丧志,但...

  • Udacity.深度学习.用 Python 统计字数.2017-

    用 Python 统计高频字数python排序问题Python标准库——collections模块的Counter...

  • 永澄:职场新人如何在三年内异军突起|知识点整理

    第一:关键词 stepAS 高频小套路 GROW思考模型 RSQC模型 PORT模型 第二:解决问题 如何在职场中...

  • centos 7 python 升级

    最早试过多种套路。 套路1: python2 python3双环境。 套路2: 基于virtual env的多环境...

  • 【读书笔记】检视阅读

    原文:【深度解读】检视阅读,你真的会了吗? 读书笔记: 检视阅读的核心目标:通过检视阅读找到阅读本身的“高频小套路...

网友评论

      本文标题:python 高频小套路

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