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处理中文编码和判断编码示例
Feb 26 Python
在Python上基于Markov链生成伪随机文本的教程
Apr 17 Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 Python
使用C++扩展Python的功能详解
Jan 12 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
Sep 03 Python
Python3.5实现的三级菜单功能示例
Mar 25 Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 Python
python数组循环处理方法
Aug 26 Python
python进行参数传递的方法
May 12 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
QT5 Designer 打不开的问题及解决方法
Aug 20 Python
Pytorch可视化的几种实现方法
Jun 10 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常用函数(php下操作数据库必备)
2010/09/12 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
php常见的魔术方法详解
2014/12/25 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
PHP实现用session来实现记录用户登陆信息
2018/10/15 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
jQuery 解析xml文件
2009/08/09 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
2014/11/18 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
django基础学习之send_mail功能
2019/08/07 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
个人生活学习自我评价范文
2013/11/26 职场文书
给物业的表扬信
2014/01/21 职场文书
解除租房协议书
2014/12/03 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server