码迷,mamicode.com
首页 > 编程语言 > 详细

python基础:网络编程

时间:2018-05-16 20:46:16      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:span   mod   requests   注意   urllib   写入文件   示例   表示   models   

一、网络编程

简而言之,就是通过代码打开一个url,获得返回结果并做处理。通常所说的python爬虫,就属于网络编程

二、urllib模块进行网络编程

这个方法很繁琐,不建议使用。了解

示例1:

获取一个网页内容,写入文件

from urllib import request,parse
# url = ‘http://www.baidu.com‘
# req = request.urlopen(url)  #打开一个url,发get请求
# content = req.read().decode() #获取返回结果,是二进制,需要先decode()
# fw = open(‘baidu.html‘,‘w‘,encoding=‘utf-8‘)
# fw.write(content)

示例2:

获取接口返回结果,做判断

from urllib import request,parse#导入urllib模块的request和parse
import json
# url=‘http://127.0.0.1/api/user/stu_info?stu_name=aaa‘eq = request.urlopen(url)  #打开一个url,发get请求
# content = req.read().decode() #获取返回结果,二进制,要先解二进制decode()为字符串
# res_dic = json.loads(content) #返回的结果转成字典
# if res_dic.get(‘error_code‘) == 0:
#     print(‘测试通过‘)
# else:
#     print(‘测试失败‘,res_dic)

示例3:

有参数传入时,用parse拼接参数,请求url,获取结果

from urllib import request,parse
url = http://api.nnzhp.cn/api/user/login
data = {
    username:admin,
    passwd:aA123456
} #请求数据,写成字典格式
data = parse.urlencode(data)  #urlencode,自动给你拼好参数
# xx=xx&xx=11
req = request.urlopen(url,data.encode()) #发post请求
print(req.read().decode())

以上看到urllib的用法先对比较麻烦,一步一步操作,必须先打开url,在传入参数,对返回的结果还要在进行处理。

requesets模块已经很好地将这几步封装。用起来更方便

三、requests

这个模块属于第三方模块,需要安装导入。pip install requests

示例1:

发送get请求url

1、发get请求
url = http://127.0.0.1/api/user/stu_info
data = {stu_name:aaa}  #请求数据,用字典
req = requests.get(url,params=data)  #发get请求,直接写入参数url,和传参data即可自动访问网址,并返回数据。注意:get请求的传参必须用格式  params=参数
#req返回的结果,是一个requests.models.Response对象
print(req.json()) #可以把返回数据转换成字典 print(req.text) #把返回数据转换成string,json串

示例2:

发送post请求

url = http://127.0.0.1/api/user/login
data = {username:‘aaa,passwd:123456}  #请求数据,字典封装
req = requests.post(url,data)  #发送post请求,可直接传入参数data,不用写params
print(req.json())#将结果转换成字典

示例3:

入参就是json格式

url=http://127.0.0.1/api/user/add_stu
data =  {
    "name":"小1",
    "grade":"天蝎座",
    "phone":13640000000,
    "sex":"",
    "age":28,
    "addr":"发斯蒂芬斯蒂芬"
  }#参数,json串
req = requests.post(url,json=data)#入参是json,在传入参数时要指定  json=参数
print(req.json())

示例4:

带有cookie的post请求

url = http://127.0.0.1/api/user/gold_add
data = {stu_id:468,gold:10000}
djl = {aaa:337ca4cc825302b3a8791ac7f9dc4bc6}
req = requests.post(url,data,cookies=djl)#入参带有cookie,在传入参数时,指定  cookies=参数
print(req.json())

示例5:

带有header的get请求

url = http://127.0.0.1/api/user/all_stu
header = {
    Referer:http://127.0.0.1/
}
req = requests.get(url,headers=header)#指定  headers=参数
print(req.json())

示例6:

需要上传文件的请求

url= http://127.0.0.1/api/file/file_upload
data = {
    file:open(rC:\Users\bjniuhanyang\Desktop\图\6bd9026dt935575932465&690.jpg,rb)
}#参数,如果上传的是个其他文件,则后面的rb可不写。因为上传的图片会以二进制形式保存,用rb表示读二进制模式。当然如果下载一个文件,则用wb
req= requests.post(url,files=data)#指定 files=参数
print(req.json())

示例7:

下载文件

url = http://up.mcyt.net/?down/46779.mp3#要下载文件的url
req = requests.get(url)
fw = open(aaa.mp3,wb)#mp3格式也是用二进制保存,所以用wb写二进制模式,将对应文件的内容读取到
fw.write(req.content)#将读取到的内容写到一个文件中。这个文件内容就是下载的文件内容。

 

python基础:网络编程

标签:span   mod   requests   注意   urllib   写入文件   示例   表示   models   

原文地址:https://www.cnblogs.com/bendouyao/p/9047853.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!