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实现方法
Nov 18 Python
Python学生信息管理系统修改版
Mar 13 Python
简单实现Python爬取网络图片
Apr 01 Python
详解python中的time和datetime的常用方法
Jul 08 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
Oct 09 Python
python实现画出e指数函数的图像
Nov 21 Python
利用Pytorch实现简单的线性回归算法
Jan 15 Python
Python读取VOC中的xml目标框实例
Mar 10 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
Idea安装python显示无SDK问题解决方案
Aug 12 Python
matplotlib基础绘图命令之errorbar的使用
Aug 13 Python
PyCharm 配置SSH和SFTP连接远程服务器
May 11 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 注册时输入信息验证器的实现详解
2013/07/05 PHP
PHP实现简单的新闻发布系统实例
2015/07/28 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
在js(jquery)中获得文本框焦点和失去焦点的方法
2012/12/04 Javascript
window.open以post方式将内容提交到新窗口
2012/12/26 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
Django-migrate报错问题解决方案
2020/04/21 Python
Python 存取npy格式数据实例
2020/07/01 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
银行办公室岗位职责
2014/03/10 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
运动会报道稿300字
2014/10/02 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
php字符串倒叙
2021/04/01 PHP