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中的闭包总结
Sep 18 Python
Django中使用locals()函数的技巧
Jul 16 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
Apr 02 Python
使用Scrapy爬取动态数据
Oct 21 Python
Pandas GroupBy对象 索引与迭代方法
Nov 16 Python
python 移动图片到另外一个文件夹的实例
Jan 10 Python
pyqt5移动鼠标显示坐标的方法
Jun 21 Python
使用python获取邮箱邮件的设置方法
Sep 20 Python
Python基于network模块制作电影人物关系图
Jun 19 Python
python温度转换华氏温度实现代码
Dec 06 Python
Python基础之pandas数据合并
Apr 27 Python
python库sklearn常用操作
Aug 23 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正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
jQuery autocomplete插件修改
2009/04/17 Javascript
Prototype Hash对象 学习
2009/07/19 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
2016/10/04 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
Vue单文件组件基础模板小结
2017/08/10 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
2018/07/31 NodeJs
微信小程序错误this.setData报错及解决过程
2019/09/18 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
python语言的优势是什么
2020/06/17 Python
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
办公室主任岗位职责
2013/11/08 职场文书
写好自荐信的几个要点
2013/12/26 职场文书
心理健康教育心得体会
2013/12/29 职场文书
办公室主任职责范本
2014/03/07 职场文书
房屋公证委托书
2014/04/03 职场文书
班级团队活动方案
2014/08/14 职场文书
个人租房协议书样本
2014/10/01 职场文书
求职意向书范本
2015/05/11 职场文书
基于python制作简易版学生信息管理系统
2021/04/20 Python
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python