zoukankan      html  css  js  c++  java
  • python基础:网络编程

    一、网络编程

    简而言之,就是通过代码打开一个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(r'C:UsersjniuhanyangDesktop图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)#将读取到的内容写到一个文件中。这个文件内容就是下载的文件内容。
  • 相关阅读:
    我的知识库(4) java获取页面编码(Z)
    知识库(3)JAVA 正则表达式 (超详细)
    The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts
    某人总结的《英语听力的技巧 》,挺搞的
    我的知识库(5)java单例模式详解
    构建可扩展程序
    SerialPort (RS232 Serial COM Port) in C# .NET
    Python学习笔记——String、Sequences
    UI题目我的答案
    jQuery学习系列学会操纵Form表单元素(1)
  • 原文地址:https://www.cnblogs.com/bendouyao/p/9047853.html
Copyright © 2011-2022 走看看