作业
爬一个图片
import requests res = requests.get('http://www.xiaohuar.com/d/file/20190607/cc9f2c32f17057412aec5e3bfff768ea.jpg') print(res.content) with open('校花网.jpg','wb')as f: f.write(res.content)
结果截图
函数的剩余部分讲解
''' 函数的三种定义方式 ''' #无参函数 #不需要接收外部传入的参数 #def foo(): # print('from foo..') # foo() #有参函数 #需要接受外部传入的参数 def login(user,pwd): print(user,pwd) #传参多一或少一不可 login('tank','123') #login('tank'# ,'123',111) #login('tank')#少,报错 #比较两数大小 def max2(x,y): if(x > y): print(x) else: print(y) max2(10,20) #空函数 #遇到一些比较难实现的功能,会导致暂时无法继续编写代码。 #所以一般在生产开发中,都会将所有功能实现 def func(): pass #pass代表什么都不做 ''' 函数返回值 在调用函数时,需要接收函数体内部产生的结果,则return返回值。 ''' def max2(x,y): if(x > y): return x else: return y res = max2(10,20) print(res) ''' 函数对象 指的是函数名指向的内存地址。 ''' def fun(): pass #print(func) #func() def func2(): pass #把函数对象,传入字典中 dict1 = { '1':func, '2':func2 } choice = input('请输入功能编号:').strip() #若用户选择函数对象对应的key值,则调用该函数 if choice in dict1: dict1[choice]()#dict1['1'] ''' 函数嵌套: 嵌套定义 在函数内定义函数 ''' #函数嵌套定义 def func1(): print('func1...') def func2(): print('func2...') def func3(): print('func3...') return func3 return func2 #通过函数内部的函数值,调用函数 func2 = func1() func3 = func2() func3() def func1(): print('func1...') def func2(): print('func2...') def func3(): print('func3...') #... func3() func2() func1() ''' 函数的名称空间 python解释器自带的:内置名称空间 自定义的py文件内,顶着最左边定义的:全局名称空间 函数内部定义的:局部名称空间 ''' #name = 'tank' def func1(): #name = 'tank' print() def func2(): print('func2...') #print(name,'全局打印’) func1()
以下是模块与包的内容
#import 模块名 import B #form B import a #导入B模块中a的文件 #会自动执行a文件中的代码 from B import a #__name__:B.a #a
以下是内置模块的内容
''' 常用模块(内置模块) time json os sys ''' #time import time #导入time模块 #获取时间戳 print(time.time()) #等待2秒 time.sleep(2) print(time.time()) #os import os #判断tank.txt文件是否存在 print(os.path.exists('tank.txt'))#True print(os.path.exists('tank1.txt'))#False print(os.path.exists(r'C:\Program Files\JetBrains\PycharmProjects\untitled\Day 3\tank.txt'))#True #获取当前文件的根目录 print(os.path.dirname(__file__)) #C:\Program Files\JetBrains\PycharmProjects\untitled\Day 3 #sys import sys #获取python在环境变量中的文件路径 print(sys.path) #把项目的根目录添加到环境变量中 sys.path.append(os.path.dirname(__file__)) print(sys.path) # json import json user_info = { 'name':'tank', 'pwd':'123' } #dumps:序列化 #1.把字典转化成json数据 #2.再把json数据转成字符串类型 res = json.dumps(user_info) print(res) print(type(res)) with open('user.json','wt',encoding='utf-8')as f: f.write(res) #loads:反序列化 #json.loads() #1.把json文件数据读到内存中 with open('user.json','r',encoding='utf-8')as f: #读取得到的是字符串 res = f.read() #print(type(res)) #loads把json格式的字符串转换成dict类型 user_dict = json.loads(res) print(user_dict)#{'name':'tank','pwd':'123'} print(type(user_dict))#<class'dict'> #dump user_info={ 'name':'tank', 'pwd':'123' } with open('user_info.json','w',encoding='utf-8')as f: res = f.read() #load with open('user_info.json','r',encoding='utf-8')as f: # res = f.read() #user_dict = json.loads(res) #print(user_dict) #load: 自动触发f.read() user_dict = json.load(f) print(user_dict)
以下为爬虫基础
''' http协议 请求ur1:https://www.baidu.com/ 请求方式: GET 请求头: cookie:可能需要关注(从而跳过用户名的认证) User-Agent:用来证明你是浏览器 注意:去浏览器request headers中查找 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36 Host: www.baidu.com ''' #requests模块使用 import requests response = requests.get(url='https://www.baidu.com/') response.encoding='utf-8' print(response)#<Response [200]> #返回响应状态码 print(response.status_code)#200 #返回响应文本 #print(response.text) print(type(response.text))#<class'str'> with open('baidu.html','w',encoding='utf-8')as f: f.write(response.text) #爬取梨视频(视频和图片均用此方法,不需要用utf-8,因为都为二字流) import requests res = requests.get('https://video.pearvideo.com/mp4/adshort/20190613/cont-1565846-14013215_adpkg-ad_hd.mp4') print(res.content) with open('视频.MP4','wb')as f: f.write(res.content)
感想:
今天第一次真正接触了爬虫,在以前一点也不清楚这是什么,然后这次的生产实习是一个契机,让我开始接触python,前几天都在学习python的一些基础语法,今天下午tank老师带我们学习了简单的网站爬取以及图片和视频的爬取,,自己晚上做作业时自己也尝试了一次,成功了真的很喜悦,希望明天可以学习如何去爬一个网站,期待!