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 相关文章推荐
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 Python
pygame实现简易飞机大战
Sep 11 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
Python模块的加载讲解
Jan 15 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
Sep 17 Python
PyCharm如何导入python项目的方法
Feb 06 Python
python安装cx_Oracle和wxPython的方法
Sep 14 Python
python 提高开发效率的5个小技巧
Oct 19 Python
python实现发送QQ邮件(可加附件)
Dec 23 Python
Python中 range | np.arange | np.linspace三者的区别
Mar 22 Python
python图像处理 PIL Image操作实例
Apr 09 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版)
2006/10/09 PHP
PHP文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
JavaScript中string对象
2015/06/12 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
微信小程序签到功能
2018/10/31 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
python里大整数相乘相关技巧指南
2014/09/12 Python
Python科学画图代码分享
2017/11/29 Python
Django权限机制实现代码详解
2018/02/05 Python
使用django实现一个代码发布系统
2019/07/18 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
python实现简单坦克大战
2020/03/27 Python
美国二手奢侈品寄售网站:TheRealReal
2016/10/29 全球购物
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
会计实训总结范文
2015/08/03 职场文书
《风筝》教学反思
2016/02/23 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
如何使用Tkinter进行窗口的管理与设置
2021/06/30 Python
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server
Python办公自动化解决world文件批量转换
2021/09/15 Python
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL