利用Python调用pastebin.com API自动创建paste
在上一篇文章中,已经实现了模拟pastebin.com的账号登录,并且获取了api_dev_key,这一篇文章主要讲一下调用API创建paste
登录之后,进入API页面,发现网站已经提供了几个API接口供调用
在创建paste之前,需要创建一个api_user_key,将得到的api_user_key作为创建paste API的提交数据。
这里给出实现整个任务的代码:
- import requests
- from lxml import etree
- class PasteBin(object):
- def __init__(self, username, password):
- self.username = username
- self.password = password
- def login(self):
- login_url = "https://pastebin.com/login"
- self.session = requests.Session()
- form_data = {
- "submit_hidden": "submit_hidden",
- "user_name": self.username,
- "user_password": self.password,
- "submit": "Login"
- }
- headers = {"content-type": "application/x-www-form-urlencoded"}
- res = self.session.post(login_url, data=form_data, headers=headers)
- if res.status_code != 200:
- raise Exception("login fail")
- # 获取api_dev_key
- self.api_dev_key = self.get_api_dev_key()
- def get_api_dev_key(self):
- api_url = "https://pastebin.com/api"
- text = self.session.get(api_url).content.decode("utf-8")
- html = etree.HTML(text)
- target_divs = html.xpath('//*[@id="content_left"]/div[9]/div/text()')
- if target_divs:
- api_dev_key = target_divs[0]
- print("api_dev_key:", api_dev_key)
- else:
- raise Exception("cannot find api_dev_key")
- return api_dev_key
- def get_api_user_key(self):
- url = "https://pastebin.com/api/api_login.php"
- post_data = {
- "api_dev_key": self.api_dev_key,
- "api_user_name": self.username,
- "api_user_password": self.password
- }
- r = requests.post(url, data=post_data)
- if r.status_code != 200:
- raise Exception("get api_user_key fail")
- return r.text
- def create_paste(self, paste_name, paste_code):
- api_user_key = self.get_api_user_key()
- create_paste_url = "https://pastebin.com/api/api_post.php"
- post_data1 = {"api_dev_key": self.api_dev_key,
- "api_option": "paste",
- "api_paste_code": paste_code,
- "api_paste_name": paste_name,
- "api_user_key": api_user_key,
- "api_paste_private": 2}
- r = requests.post(create_paste_url, data=post_data1)
- if r.status_code != 200:
- raise Exception("create paste fail")
- else:
- print("create paste succeed")
- if __name__ == "__main__":
- username = "kuang123321"
- password = "xxxxxx"
- p = PasteBin(username, password)
- p.login()
- p.create_paste("by code1", "This is a code test")
利用Python调用pastebin.com API自动创建paste的更多相关文章
- python调用openstack的api,create_instance的程序解析
python调用openstack的api,create_instance的程序解析 2017年10月17日 15:27:24 CloudXli 阅读数:848 版权声明:本文为博主原创文章,未经 ...
- Python 调用图像融合API
Python 调用图像融合API 本文记录使用Python,调用腾讯AI开放平台的图像融合API.官网给出的Demo用的是PHP,博主作为Python的粉丝,自然想用它来和『最好的』的语言一较高下,顺 ...
- 用Python调用华为云API接口发短信
[摘要] 用Python调用华为云API接口实现发短信,当然能给调用发短信接口前提条件是通过企业实名认证,而且有一个通过审核的短信签名,话不多说,showcode #!/usr/bin/python3 ...
- python 调用github的api,呈现python的受欢迎的程度
1 使用api调用数据: 在浏览器的地址栏中输入: https://api.github.com/search/repositories?q=language:python&sort=star ...
- Python 调用百度翻译API
由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...
- Python 调用阿里云 API 收集 ECS 数据
#!/usr/bin/env python # coding: utf-8 # author: Wang XiaoQiang ''' 功能介绍: 1.调用阿里云API,收集所有区域 ECS 信息 2. ...
- Python调用百度地图API实现批量经纬度转换为实际省市地点(api调用,json解析,excel读取与写入)
1.获取秘钥 调用百度地图API实现得申请百度账号或者登陆百度账号,然后申请自己的ak秘钥.链接如下:http://lbsyun.baidu.com/apiconsole/key?applicatio ...
- Python的Web编程[2] -> WebService技术[0] -> 利用 Python 调用 WebService 接口
WebService技术 / WebService Technology 1 关于webservice / Constants WebService是一种跨编程语言和跨操作系统平台的远程调用技术. W ...
- PYTHON调用JENKINS的API来进行CI
我查到的相关API有两套,我主要用的是python-jenkins. https://pypi.python.org/pypi/python-jenkins/ 按语法调用即可... import je ...
随机推荐
- Java并发编程艺术读书笔记
1.多线程在CPU切换过程中,由于需要保存线程之前状态和加载新线程状态,成为上下文切换,上下文切换会造成消耗系统内存.所以,可合理控制线程数量. 如何控制: (1)使用ps -ef|grep appn ...
- Oracle EBS如何查找到说明性弹性域Title
Oracle EBS如何查找到说明性弹性域Title 一.方法一:直接在弹性栏位界面查询 在EBS中,有部分表已经启用说明性弹性域,我们可以直接在界面得到弹性域对话框的标题,如下图所示,在OM-事务处 ...
- [视频教程] 包管理器方式安装使用openresty新手上路
OpenResty是一个通过Lua扩展Nginx实现的可伸缩的Web平台,内部集成了大量精良的Lua库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高的动态Web应用.Web ...
- kafka相关操作
kafka安装 下载 wget http://apache.gree.com/apache/kafka/1.0.2/kafka_2.11-1.0.2.tgz tar -zxvf kafka_2.11- ...
- show()和隐藏hide() slideDown()和 slideUp() fadeIn()和fadeOut()
1==>显示show()和隐藏hide() 是一组动画 与切换toggle()$("div").show():当不传递参数时,没有动画效果,它将某个元素瞬间显示出来 $(&q ...
- 2017年蓝桥杯B组C/C++决赛题解
2017年蓝桥杯B组C/C++决赛题目(不含答案) 1.36进制 ok 求36进制,类比二进制转10进制,36^3 + 36^2 + 36^1 + 36^0 2.磁砖样式 ok dfs搜索 我自己写的 ...
- c# WF 第7节 对控件的基本操作
本节内容: 1:修改控件的大小 2:控件的顺序 3:控件的对齐 4:移动button实例 1: 修改控件的大小 第一种: 第二种 : 一次操作多个控件: 选择一个控件.按住ctrl -- 再选择一个控 ...
- js 三种存储方式的区别
javaScript有三种数据存储方式,分别是: sessionStorage localStorage cookie 相同点:都保存在浏览器端,同源的 不同点: ①传递方式不同 cookie数据始终 ...
- 《Java多线程设计模式》学习
还是别人的笔记比较详细: https://segmentfault.com/blog/ressmix_multithread?page=3 mark.
- CSP-J&S2019前颓废记
说了是颓废记,就是颓废记,因为真的很颓废...... 2018年12月 我看懂了<啊哈算法>(仅仅是看懂,并没有完全学会,只看得懂,却不会敲) 插曲:八上期末考试 我们老师阻挠我继续学OI ...