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中用于返回绝对值的abs()方法
May 14 Python
简单实现python收发邮件功能
Jan 05 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
python实现指定字符串补全空格、前面填充0的方法
Nov 16 Python
python使用suds调用webservice接口的方法
Jan 03 Python
python使用for循环计算0-100的整数的和方法
Feb 01 Python
简单了解python中对象的取反运算符
Jul 01 Python
解决TensorFlow GPU版出现OOM错误的问题
Feb 03 Python
Python字符串格式化常用手段及注意事项
Jun 17 Python
Keras loss函数剖析
Jul 06 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
Oct 20 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Apr 02 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 array_merge_recursive 数组合并
2016/10/26 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
jQuery find和children方法使用
2011/01/31 Javascript
jquery 之 $().hover(func1, funct2)使用方法
2012/06/14 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
jQuery 移动端artEditor富文本编辑器
2016/01/11 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
JSONP跨域请求
2017/03/02 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
关于Webpack dev server热加载失败的解决方法
2018/02/22 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
javascript运行机制之执行顺序理解
2020/08/03 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
python读取并写入mat文件的方法
2019/07/12 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
2020/08/19 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
一道SQL存储过程面试题
2016/10/07 面试题
周年庆典邀请函范文
2014/01/23 职场文书
家长给孩子的评语
2014/01/30 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
2014年纠风工作总结
2014/12/08 职场文书
岗位聘任报告
2015/03/02 职场文书
使用refresh_token实现无感刷新页面
2022/04/26 Javascript