该篇在前面的基础上增加了上次文件的功能,并对代码做了简单的封装,贴上代码,上面有比较详细的注释:

apiMethod.py文件:

# coding:utf-8
import requests
from bs4 import BeautifulSoup
class ApiMethod():def __init__(self,userAgent):self.h = {"User-Agent": userAgent}#通过session来登录CSDN,保持一直登录状态def loginCsdn(self):try:s= requests.session()c = requests.cookies.RequestsCookieJar()c.set("UserInfo","ltxlmnyec9obNIiCirM0KBmlYeijHfUcQ%2BZE7J%2B%2Ffk1djT8xd36OsnAqrYJ46KvVN8f%2BdG6KiVfFSHuxAmSJTT8VFZF%2FpmyBVj3McsPss%2FAH6gR3SuyN3ms9A9pd7xaq8T%2FZ%2Fcr5ZOVFqSGjNvpRqQ%3D%3D")c.set("UserNick","%E9%A3%8E%E6%A5%9A%E9%A2%9C")c.set("AU","FCF")c.set("Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac","1521982541")c.set("dc_tos","p65d8s")c.set("UserName","maybe_frank")s.cookies.update(c)re = s.get("https://mp.csdn.net/postedit",headers = self.h)soup = BeautifulSoup(re.content,"html.parser")title = soup.title.stringif title == "写文章-CSDN博客":print("登录成功!")else:print("登录失败")return sexcept Exception as e:print(e)def upload(self,session,urlPath,fileName,file):try:f = {"file":(fileName,open(file,"rb"),"image/png")}re = session.post(url=urlPath,headers = self.h,files = f)return re.json()["content"]except Exception as e:print(e)def write(self,session,urlPath,data):try:body = datare = session.post(url=urlPath,headers = self.h,data=body)#返回上传图片后的图片urlreturn  re.json()["content"]except Exception as e:print(e)if __name__ == '__main__':sf = ApiMethod("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0")s = sf.loginCsdn()sf.upload(s,"https://mp.csdn.net/UploadImage","Q1.png","C:\\Users\\ztf.YFK\\Desktop\\1.png")data = {"titl":"wers","typ":1,"cont":'<p>上传文件:</p><p><img src="https://img-blog.csdn.net/20180326110705916" alt="" /><br /></p>',"categories":"接口","chnl":16,"level":0,"tag2":"","artid":0,"private":"false","stat":"publish"}content = sf.write(s,"https://mp.csdn.net/postedit/saveArticle?isPub=1",data)print(content)

调用入口:writeBlog.py

from csdn.apiMethod import ApiMethod
import unittest
import time
import random
class WriteBlog(unittest.TestCase):@classmethoddef setUpClass(cls):cls.sf = ApiMethod("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0")cls.s = cls.sf.loginCsdn()@classmethoddef tearDownClass(cls):passdef test_writeBlog(self):file_url = self.upload(self.s,"https://mp.csdn.net/UploadImage","Q1.png","C:\\Users\\ztf.YFK\\Desktop\\1.png")print("上传文件后的url:",end="")print(file_url)#发布博客时的传的body的数据num= random.randint(1,1000)self.data = {"titl":"wers%s"%num,"typ":1,"cont":'<p>上传文件:</p><p><img src="https://img-blog.csdn.net/20180326110705916" alt="" /><br /></p>',"categories":"接口","chnl":16,"level":0,"tag2":"","artid":0,"private":"false","stat":"publish"}#调用发布博客接口content = self.sf.write(self.s,"https://mp.csdn.net/postedit/saveArticle?isPub=1",self.data)print(content)#self.assertTrue(self,content,"发布成功!")self.assertEqual(self,content,"发布成功","调用发布博客接口请求失败!")if __name__ == '__main__':unittest.main()

带上传文件功能的写CSDN博客并发表相关推荐

  1. 使用GifCam工具上传GIF动态图至CSDN博客

    工具 我找了一个免费小巧的gif图制作工具, 官网下载链接:GifCam工具 博客下载地址:GifCam工具 使用方法 打开就是这样的一个界面,把你要录制的界面框起来,然后点击 Rec 就可以开始录制 ...

  2. 超详细的实现上传文件功能教程,文件上传实现。

    重要声明:本文章仅仅代表了作者个人对此观点的理解和表述.读者请查阅时持自己的意见进行讨论. 本文更新不及时,请到原文地址浏览:<超详细的实现上传文件功能教程,文件上传实现.>. 一.文件上 ...

  3. vue上传文件到php,vue+axios+php如何实现上传文件功能?,formdata上传文件附加参数...

    vue+axios+php如何实现上传文件功能?Vue Axios PHP如何实现上传文件的功能?, 推荐:<PHP视频教程> 当我们提交表单时,我们经常会遇到一些表单提交要求.vue的a ...

  4. 公众号后台开发上传文件功能

    微信公众号开发中, 上传文件是一个常用功能, 包括图片上传,视频,文件,附件,语音都要使用到这个. 今天的课程中, 介绍一个上传文件的类, 可以设置保存文件路径, 设置上传文件的类型- 公众号后台开发 ...

  5. java 转发上传文件_Java 发送http请求上传文件功能实例

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package wxapi.WxHelper; import java.io.BufferedReader; import java.io.Dat ...

  6. jQuery+php+ajax实现无刷新上传文件功能

    2019独角兽企业重金招聘Python工程师标准>>> jQuery+php+ajax实现无刷新上传文件功能,还带有上传进度条动画效果,支持图片.视频等大文件上传. js代码: &l ...

  7. php实现上传文件功能,简单实现php上传文件功能

    本文实例为大家分享了php上传文件功能的具体代码,供大家参考,具体内容如下 html: 文件名: php: // 允许上传的图片后缀 $allowedExts = array("gif&qu ...

  8. java上传文件功能_Java MemoryMapped文件的功能

    java上传文件功能 Java MemoryMapped文件的功能 在JDK 1.4中,内存映射文件的一个有趣功能被添加到Java中,该功能允许将任何文件映射到OS内存以进行有效读取. 内存映射文件可 ...

  9. php iframe 上传文件,php+iframe 实现上传文件功能示例

    本文实例讲述了php+iframe 实现上传文件功能.分享给大家供大家参考,具体如下: 我们通过动态的创建iframe,修改form的target,来实现无跳转的文件上传. 具体的实现步骤 1.捕捉表 ...

最新文章

  1. Windows10下Python3做OpenGL的编程
  2. C++知识点48——类继承与类的作用域
  3. android 强制打开gps定位_Android 6.0 默认关闭定位和GPS,开启后默认选省电
  4. php获取上传多个文件缺失
  5. C++知识点串联总结
  6. Silverlight 3 全系列开发工具发布
  7. php string常用函数
  8. 设计师社区|你和设计大咖一起沟通的平台--集设
  9. Codeforces Round #192 (Div. 1) A. Purification 贪心
  10. Qt——P13 Q4版本信号槽连接
  11. Grafana 中存在严重的未授权任意文件读取漏洞,已遭利用
  12. 怎么从服务器传输信息,大神们socket如何连接到服务器并判断从服务器传送回来的数据 谢谢谢谢 跪求啊 急用...
  13. 苹果mac绘图软件:AutoCAD
  14. 电脑win10计算机图标,告诉你如何显示win10计算机图标
  15. Java基础----交通工具的继承写法(面向对象的三大特征)
  16. 「Python入门」Python多进程
  17. 贝叶斯算法(bayesian)在GCMail反垃圾邮件系统中的应用
  18. proxmox 控制台无法连接_Proxmox VE 5.4中的NAT网络-重置网络接口后,VM的连接消失了...
  19. win10清理_卸载全家桶之后:用win10自带杀软,怎么清理电脑垃圾?
  20. vs写c语言快捷键,vs快捷键

热门文章

  1. 无线传感器网络中的节点定位技术
  2. validation 分组校验注解大全及使用详解
  3. 通过rustlings源码了解rust如何从命令行参数里面获取值的方式
  4. 制造业数字化转型关键问题有哪些?
  5. java 浏览器测试,【Java资源大全】Selenium:基于浏览器的测试套件
  6. JS实现拼接图片src
  7. oracle中drop和delete,oracle中delete drop truncate的用法和区别
  8. 利用连按 5 下 Shift 漏洞破解 win7 开机密码(原理以及实现)
  9. Java简单演示悲观锁
  10. 【c++数据结构】栈混洗的甄别算法