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)#将读取到的内容写到一个文件中。这个文件内容就是下载的文件内容。
  • 相关阅读:
    mac下如何全量删除短信内容
    git log --oneline --graph的读法
    nginx bind() to 0.0.0.0:**** failed (13: Permission denied)
    nginx安装和配置
    pycharm的插件pylint报错:java.lang.Throwable: Write-unsafe context! Model changes are allowed from write-safe contexts only. Please ensure you're using invokeLater/invokeAndWait with a correct modality stat
    python编码规范、js编码规范及IDE的检查插件pylint/eslint等
    Flask 在 Debug 模式下初始化2次
    python的globals()使用
    删除整张表数据但是空间没有减少
    DBCC DBREINDEX重建索引提高SQL Server性能
  • 原文地址:https://www.cnblogs.com/bendouyao/p/9047853.html
Copyright © 2011-2022 走看看