目录
概要
提升工作效率,通过python request模块上传压缩文件。
公司跨部门工作经常需要进行文件互传,为了保证信息安全,公司内建了一个网站来保存压缩文件,但每次传输都需要多次点击完成文件上传,繁琐低效。尝试通过request 构建自动上传压缩文件的脚本。
改动思路
原本上传需要点击按钮选择文件,随后submit。准备使用request模块完成自动上传。
检查网页元素后发现使用POST,content - Type 为multipart/form-data,遂去查阅很多资料,试了很久都没有效果。最后发现其实许多教程里讲到的headers(请求头)不要也可以,不用太关注content - Type,重点是payload不能出问题,需要把上传的数据格式设置好。
payload如下:
关注到其实是有三个参数在,但是我们文件是在text这个类别中,sub这个类别不重要,直接写它给的值,txt完全看不出什么作用,直接不去管它。
request参数简要介绍
使用request需要了解其中常用的部分参数,一些常用的参数如下:
- proxy :设置你的代理,需要连接外部网站时要进行VPN配置,由于网站是公司内网,故不需要配置。
- auth :设置你的用户名和密码,常规网站都使用usr和password进行认证,如不是请自行确认。
- files :设置你需要传输的文件,这里推荐去官方网站看一下,不同文件类型可以采用不同的设置。
- url:设置对应的网址链接
- timeout: 设置响应时间,建议加上一个,本人实际debug过程中经常卡住不动,只能强行关闭。
代码展示
import requests
# 文件上传的接口
#proxy ={'http':'http://usr:password@XXX.XXX.XXX.XXX:XXXX','https':'http://usr:password@XXX.XXX.XXX.XXX:XXXX'}#如果去外部链接,需要增加代理选项
url_path='给出你的网址!'
# url_path='https://www.runoob.com/python3/python3-tutorial.html'
usr='用户名'
pw='密码'
fileObject = {
'text':('monkey_king.zip',open('monkey_king.zip','rb'),'zip'),
'sub': (None,'Submit',None),
'file': (None,'',None)
}
req = requests.post(url=url_path,files=fileObject,timeout=2,auth=(usr,pw))
print(req.text)
小结
其中的部分参数还是有些不清楚,如果有问题还请指正。当然你可以参照以下网址去了解更多内容:
http://www.jianshu.com/p/e810d1799384
https://stackoverflow.com/questions/3508338/what-is-the-boundary-in-multipart-form-data
http://docs.python-requests.org/en/master/user/quickstart/#post-a-multipart-encoded-file
https://stackoverflow.com/questions/12385179/how-to-send-a-multipart-form-data-with-requests-in-python/12385661#12385661