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读取word文档的方法
May 09 Python
django的登录注册系统的示例代码
May 14 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 Python
python读取几个G的csv文件方法
Jan 07 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
Python后台开发Django会话控制的实现
Apr 15 Python
Pycharm简单使用教程(入门小结)
Jul 04 Python
python的几种矩阵相乘的公式详解
Jul 10 Python
Python基础之函数原理与应用实例详解
Jan 03 Python
python os模块在系统管理中的应用
Jun 22 Python
python3中calendar返回某一时间点实例讲解
Nov 18 Python
python控制台打印log输出重复的解决方法
May 14 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
一个程序下载的管理程序(一)
2006/10/09 PHP
php下载远程文件类(支持断点续传)
2008/11/14 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
面向对象的javascript(笔记)
2009/10/06 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
浅谈jQuery.easyui的datebox格式化时间
2015/06/25 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
JavaScript之数组扁平化详解
2019/06/03 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
[59:36]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第二场
2018/04/04 DOTA
centos下更新Python版本的步骤
2013/02/12 Python
python操作MySQL数据库具体方法
2013/10/28 Python
Python中为什么要用self探讨
2015/04/14 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
使用Python写个小监控
2016/01/27 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
python中数据库like模糊查询方式
2020/03/02 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
物理教育专业毕业生推荐信
2013/11/03 职场文书
2014年毕业演讲稿范文
2014/05/13 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
前台接待岗位职责
2015/02/03 职场文书
入党转正申请报告
2015/05/15 职场文书
心灵捕手观后感
2015/06/02 职场文书
英雄儿女观后感
2015/06/09 职场文书
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL
浅析Python OpenCV三种滤镜效果
2022/04/11 Python
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python