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之wxPython菜单使用详解
Sep 28 Python
python单元测试unittest实例详解
May 11 Python
python获取指定路径下所有指定后缀文件的方法
May 26 Python
Python上传package到Pypi(代码简单)
Feb 06 Python
Python 中 Meta Classes详解
Feb 13 Python
Python利用Beautiful Soup模块创建对象详解
Mar 27 Python
python下解压缩zip文件并删除文件的实例
Apr 24 Python
Numpy截取指定范围内的数据方法
Nov 14 Python
Python3模拟curl发送post请求操作示例
May 03 Python
python绘图模块matplotlib示例详解
Jul 26 Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 Python
用Python监控你的朋友都在浏览哪些网站?
May 27 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 和 COM
2006/10/09 PHP
一篇入门的php Class 文章
2007/04/04 PHP
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
php 安全过滤函数代码
2011/05/07 PHP
自己写的php curl库实现整站克隆功能
2015/02/12 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
PHP运行模式汇总
2016/11/06 PHP
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
Jquery Change与bind事件代码
2011/09/29 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
2017/02/17 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
jQuery 动态粒子效果示例代码
2020/07/07 jQuery
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
深入理解Python 多线程
2020/06/16 Python
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
教你怎样写好自我评价
2013/10/05 职场文书
实习生的自我评价
2014/01/08 职场文书
幼儿园中秋节活动方案2013
2014/01/29 职场文书
初三开学计划书
2014/04/27 职场文书
迎国庆演讲稿
2014/09/15 职场文书
单位租车协议书
2015/01/29 职场文书