Python批量发送post请求的实现代码


Posted in Python onMay 05, 2018

昨天学了一天的Python(我的生产语言是java,也可以写一些shell脚本,算有一点点基础),今天有一个应用场景,就正好练手了。

这个功能之前再java里写过,比较粗糙,原来是在我本机跑的,今天老大要求要随时保持请求,就用Python改写了下,省的又把一个有跟多杂项的jar包传到服务器,省空间又不乱,而且好读。

先附上java代码:

package xxxxxx.base;  
import java.util.Random;  
import org.apache.commons.lang3.StringUtils;  
import haojianxiang.util.HttpRequest;  
public class CreateFeedbackData { 
 
  public static void main(String[] args) { 
    while (true) { 
      try { 
        Random r = new Random(); 
        int sleep = r.nextInt(1200000) + 600000; 
        Thread.sleep(sleep); 
        post(); 
      } catch (Exception e) { 
        e.printStackTrace(); 
      } 
    } 
  } 
   
  public static void post(){ 
    String url = "http://111.111.111.111:8080/xxxx/post"; 
     
    int[] types = {1, 2, 3, 4}; 
    int index = (int) (Math.random() * types.length); 
    int type = types[index]; 
     
//   String[] contents = {"-中文测试-,","-English Test-,","~!@#$%^&*()_;:'-\"<>?/|\\-,","     "}; 
    String[] contents = {"-中文测试-,","-English Test-,","~!@#$%,","     "}; 
     
    StringBuffer content = new StringBuffer(); 
    content.append("haojianxiang test:"); 
    for (int i = 0; i < 10; i++) { 
      int idx = (int) (Math.random() * contents.length); 
      content.append(contents[idx]); 
    } 
     
    String[] imgs = {"/Upload/appUpload/58c7b315cb39f.jpg", 
        "/Upload/appUploa/58cb467a69873.jpg", 
        "/Upload/appUpload/58afff0e99432.png", 
        "/Upload/appUpload/58b545539eb80.jpg", 
        "/Upload/appUpload/58b55d7c9e281.JPG", 
    }; 
    StringBuffer img = new StringBuffer(); 
     
    for (int i = 0; i < (int) (Math.random() * 4); i++) { 
      int lucky = (int) (Math.random() * 2); 
      if (lucky == 1) { 
        int idx = (int) (Math.random() * imgs.length); 
        img.append(imgs[idx]); 
        img.append(","); 
      } 
    } 
    String imgStr = ""; 
    if (StringUtils.isNotBlank(img)) { 
      imgStr = img.substring(0, img.length()-1); 
    } 
    String param = "{\"req\":{\"userId\":xxxxxx}," + 
        "\"data\":{"\"fbType\":" + type + ",\"fbContent\":\""+content.toString()+ 
        "\",\"fbPic\":\""+imgStr+"\"}}"; 
    String rst = HttpRequest.sendPost(url, param); 
    System.out.println("TIME--"+ System.currentTimeMillis() + " result:" + rst); 
  } 
 
}

(代码里的参数地址等我已做了隐藏,json格式可能不准确了,无所谓)

接下来上Python代码:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
 
import random 
import urllib 
import urllib.request 
import time 
 
def postFeedBack(): 
  url = "http://111.111.111.111:8080/xxxx/post" 
 
  type = int(random.uniform(1,5)) 
  contents = ["-中文测试-,","-English Test-,","~!@#$%,","   "] 
  content = "haojianxiang test:" 
  for i in range(0,10): 
    content += random.choice(contents) 
 
  img = "" 
  imgs = ["/Upload/58c7b315cb39f.jpg", 
      "/Upload/58cb467a69873.jpg", 
      "/Upload/58afff0e99432.png", 
      "/Upload/58b545539eb80.jpg", 
      "/Upload/58b55d7c9e281.JPG"] 
  for i in range(0,3): 
    lucky = int(random.uniform(0,2)) 
    if lucky == 1: 
      img += random.choice(imgs) 
      img += "," 
  img = img[:-1] 
  data = "{\"req\":{\"userId\": xxx}," 
  data += "\"data\":{ 
  data += "\"fbType\":" 
  data += str(type) 
  data += ",\"fbContent\":\"" 
  data += content 
  data += "\",\"fbPic\":\"" 
  data += img 
  data += "\"}}" 
 
  pdata = bytes(data,encoding="utf-8") 
  f = urllib.request.urlopen(url,pdata) 
 
  result = f.read() 
  result = result.decode('UTF-8') 
  print(result) 
 
if __name__ == "__main__": 
  while True: 
    st = int(random.uniform(600,1800)) 
    print("sleep:",st) 
    time.sleep(st) 
    postFeedBack()

Python的写法确实很简洁高效(java代码里post的逻辑,我还是调用了自己的一个工具类,实际代码要更多),今后打算把Python作为优先脚本语言,处理简单问题很快。

Python 相关文章推荐
python模拟登陆Tom邮箱示例分享
Jan 13 Python
Python六大开源框架对比
Oct 19 Python
Python实现公历(阳历)转农历(阴历)的方法示例
Aug 22 Python
详解Python map函数及Python map()函数的用法
Nov 16 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
Jun 09 Python
django框架自定义用户表操作示例
Aug 07 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 Python
IDLE下Python文件编辑和运行操作
Apr 25 Python
python中wheel的用法整理
Jun 15 Python
python文件路径操作方法总结
Dec 21 Python
如何在Python项目中引入日志
May 31 Python
PyQt5 pyqt多线程操作入门
May 05 #Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 #Python
python中in在list和dict中查找效率的对比分析
May 04 #Python
Django如何配置mysql数据库
May 04 #Python
Python实现求一个集合所有子集的示例
May 04 #Python
python list是否包含另一个list所有元素的实例
May 04 #Python
Python判断两个list是否是父子集关系的实例
May 04 #Python
You might like
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
php实现XSS安全过滤的方法
2015/07/29 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
农历与西历对照
2006/09/06 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
遍历json 对象的属性并且动态添加属性的实现
2016/12/02 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
详解Vue前端生产环境发布配置实战篇
2019/05/07 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
element 中 el-menu 组件的无限极循环思路代码详解
2020/04/26 Javascript
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
Django中的静态文件管理过程解析
2019/08/01 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
Python如何对XML 解析
2020/06/28 Python
浅析Python迭代器的高级用法
2020/07/16 Python
Python异常处理机制结构实例解析
2020/07/23 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
给儿子的表扬信
2014/01/15 职场文书
开办大学饮食联盟创业计划书
2014/01/29 职场文书
《雨点》教学反思
2014/02/12 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
导游个人求职信范文
2014/03/23 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
消防宣传语大全
2015/07/13 职场文书