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 03 Python
Python多线程结合队列下载百度音乐的方法
Jul 27 Python
使用Django Form解决表单数据无法动态刷新的两种方法
Jul 14 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
Aug 24 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
Python Numpy数组扩展repeat和tile使用实例解析
Dec 09 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
Python参数传递实现过程及原理详解
May 14 Python
Python三维绘图之Matplotlib库的使用方法
Sep 20 Python
Python-split()函数实例用法讲解
Dec 18 Python
python 利用matplotlib在3D空间中绘制平面的案例
Feb 06 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/11/27 PHP
Thinkphp中Create方法深入探究
2014/06/16 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
再谈javascript面向对象编程
2012/03/18 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
Avalonjs 实现简单购物车功能(实例代码)
2017/02/07 Javascript
如何快速上手Vuex
2017/02/14 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
python登录QQ邮箱发信的实现代码
2013/02/10 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
python getpass实现密文实例详解
2019/09/24 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
PyQt5实现简单的计算器
2020/05/30 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
工艺员岗位职责
2014/02/11 职场文书
五四青年节的活动方案
2014/08/20 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python