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¬ice=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.pngimport 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¬ice=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>
网友评论