在上一篇文章中,已经实现了模拟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. CodeForces 1236D(模拟)

    题意 https://vjudge.net/problem/CodeForces-1236D 最近,爱丽丝得到了一个新玩偶.它甚至可以走路! 爱丽丝为玩偶建造了一个迷宫,并想对其进行测试.迷宫具有n行 ...

  2. 6. Vue - 声明周期

    一.官方vue生命周期流程图 二.vue声明周期介绍 beforeCreate执行时:data和el均未初始化,值为undefined created执行时:Vue 实例观察的数据对象data已经配置 ...

  3. C# 内存管理(一)

    引用地址:https://blog.csdn.net/libohuiyuan/article/details/81030010 一.变量类型 C#的变量类型分为值类型,引用类型.指针类型和指令类型.所 ...

  4. Linux上发布E卡通项目

    Linux上发布E卡通项目 使用的命令 ps -ef | grep java kill -9 22314 nohup java -jar smartcard-ms-0.0.1-SNAPSHOT.jar ...

  5. shell的几个实战脚本例子(欠)

    如何让shell实现 可选择性执行 的功能 巡检内存使用率 批量创建用户 场景:公司想要做测试,需要10000个用户 数据库里查询学生成绩 #如何登录mysql数据库 #如何写sql对数据进行操作 # ...

  6. 小程序setData()使用和注意事项

    注意: 直接修改this.data,而不调用this.setData(),是无法改变当前页面的状态的,会导致数据不一致 仅支持可以JSON化的数据 单次设置的数据不能超过1024KB,尽量避免一次设置 ...

  7. 第十 构建Web内容的技术

    第十章 构建Web内容的技术 一.HTML HTML(HyperText Markup Language,超文本标记语言)是为了发送Web 上的超文本(Hypertext)而开发的标记语言.超文本是一 ...

  8. Rabbitmq 实现延时任务

    1.需要用到插件 rabbitmq_delayed_message_exchange 来实现,插件下载地址:https://www.rabbitmq.com/community-plugins.htm ...

  9. Windows编译运行webrtc全过程

    年纪大了,不想写什么开头.摘要,咱直接开始吧. 不过首先还是要感谢声网提供的webrtc国内源码镜像. 首先,编译webrtc你需要一台win10,而且必须得是一直在更新版本的.因为编译过程需要用到c ...

  10. 题目:利用Calendar类计算自己的出生日期距今天多少天,再将自己的出生日期利用SimpleDateFormat类设定的格式输出显示

    package cn.exercise; import java.util.Calendar; import java.util.Date; import java.text.SimpleDateFo ...