在上一篇文章中,已经实现了模拟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的更多相关文章

  1. python调用openstack的api,create_instance的程序解析

    python调用openstack的api,create_instance的程序解析 2017年10月17日 15:27:24 CloudXli 阅读数:848   版权声明:本文为博主原创文章,未经 ...

  2. Python 调用图像融合API

    Python 调用图像融合API 本文记录使用Python,调用腾讯AI开放平台的图像融合API.官网给出的Demo用的是PHP,博主作为Python的粉丝,自然想用它来和『最好的』的语言一较高下,顺 ...

  3. 用Python调用华为云API接口发短信

    [摘要] 用Python调用华为云API接口实现发短信,当然能给调用发短信接口前提条件是通过企业实名认证,而且有一个通过审核的短信签名,话不多说,showcode #!/usr/bin/python3 ...

  4. python 调用github的api,呈现python的受欢迎的程度

    1 使用api调用数据: 在浏览器的地址栏中输入: https://api.github.com/search/repositories?q=language:python&sort=star ...

  5. Python 调用百度翻译API

    由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...

  6. Python 调用阿里云 API 收集 ECS 数据

    #!/usr/bin/env python # coding: utf-8 # author: Wang XiaoQiang ''' 功能介绍: 1.调用阿里云API,收集所有区域 ECS 信息 2. ...

  7. Python调用百度地图API实现批量经纬度转换为实际省市地点(api调用,json解析,excel读取与写入)

    1.获取秘钥 调用百度地图API实现得申请百度账号或者登陆百度账号,然后申请自己的ak秘钥.链接如下:http://lbsyun.baidu.com/apiconsole/key?applicatio ...

  8. Python的Web编程[2] -> WebService技术[0] -> 利用 Python 调用 WebService 接口

    WebService技术 / WebService Technology 1 关于webservice / Constants WebService是一种跨编程语言和跨操作系统平台的远程调用技术. W ...

  9. PYTHON调用JENKINS的API来进行CI

    我查到的相关API有两套,我主要用的是python-jenkins. https://pypi.python.org/pypi/python-jenkins/ 按语法调用即可... import je ...

随机推荐

  1. Linux:路径的概念及路径的切换

    路径分为绝对路径和相对路径 绝对路径:从/根开头的路径为绝对路径 相对路径:以当前目录为开头的为相对路径 根目录:/ 家目录:普通用户的家目录在/home下,root用户的家目录是/root 切换目录 ...

  2. .gitignore 文件没起作用

    场景 修改了.gitignore文件, 但是查看状态还是没有忽略 解决 *. 清除git缓存, 注意最后有一个点 git rm -r --cache . 再之后就可以正常使用了, 基本恢复正常, 被忽 ...

  3. C++ 学习六 operator关键字(重载)

    转载:http://blog.sina.com.cn/s/blog_4b3c1f950100kker.html operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将 o ...

  4. 利用logistic回归解决多分类问题

    利用logistic回归解决手写数字识别问题,数据集私聊. from scipy.io import loadmat import numpy as np import pandas as pd im ...

  5. 剑指Offer-1.二维数组中的查找(C++/Java)

    题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...

  6. 洛谷 P4710 「物理」平抛运动

    洛谷 P4710 「物理」平抛运动 洛谷传送门 题目描述 小 F 回到班上,面对自己 28 / 110 的物理,感觉非常凉凉.他准备从最基础的力学学起. 如图,一个可以视为质点的小球在点 A(x_0, ...

  7. 解决angular单页面页面底部跳转到新页面滚动条不在顶部的问题

    以上jquery,下面js this.router.events.subscribe((event) => { document.body.scrollTop=0; }); 另一种写法 impo ...

  8. CF92B-Binary Number-(思维)

    https://vjudge.net/problem/CodeForces-92B 题意:给一个长度为106的二进制数,有两种操作,第一种是除以2,第二种是末尾+1,以二进制运算,问这个二进制数最少几 ...

  9. windows下 go vscode编译运行方法

    1:直接在终端运行go run命令编译 2.安装code runner插件,根据箭头标示顺序,可以在右侧看到它支持的语言.

  10. 360安全浏览器右击不显示审查元素 或按F12不弹出开发人员工具的原因和解决方法:设为极速模式

    IE兼容模式  会显示 IE的开发人员工具 极速模式 才会显示谷歌的那种方式 IE调试模式不怎么习惯,如下图 正常调试模式如下图