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 相关文章推荐
pyramid配置session的方法教程
Nov 27 Python
Python中的魔法方法深入理解
Jul 09 Python
python字典序问题实例
Sep 26 Python
使用Python保存网页上的图片或者保存页面为截图
Mar 05 Python
Python简单获取自身外网IP的方法
Sep 18 Python
PYTHON 中使用 GLOBAL引发的一系列问题
Oct 12 Python
使用python生成目录树
Mar 29 Python
Python面向对象类继承和组合实例分析
May 28 Python
Python实现的爬虫刷回复功能示例
Jun 07 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
python multiprocessing模块用法及原理介绍
Aug 20 Python
python多线程爬取西刺代理的示例代码
Jan 30 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
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
js 自定义的联动下拉框
2010/02/07 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
jquery 注意事项与常用语法小结
2010/06/07 Javascript
js查错流程归纳
2012/05/04 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
深入Vue-Router路由嵌套理解
2018/08/13 Javascript
菊花转动的jquery加载动画效果
2018/08/19 jQuery
vue实现打印功能的两种方法
2018/09/07 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
2020/01/10 Python
用pytorch的nn.Module构造简单全链接层实例
2020/01/14 Python
pycharm设置默认的UTF-8编码模式的方法详解
2020/06/01 Python
实习护理工作自我评价
2013/09/25 职场文书
运动会方阵解说词
2014/02/12 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
企业党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
创先争优宣传标语
2014/10/08 职场文书
淘宝好评语句大全
2014/12/31 职场文书
三八节活动简报
2015/07/20 职场文书
初一英语教学反思
2016/02/15 职场文书
2016年禁毒宣传活动总结
2016/04/05 职场文书
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js