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常规方法实现数组的全排列
Mar 17 Python
详解Python中的各种函数的使用
May 24 Python
python获取当前运行函数名称的方法实例代码
Apr 06 Python
Python3导入自定义模块的三种方法详解
Apr 13 Python
python多进程提取处理大量文本的关键词方法
Jun 05 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
python实现二维数组的对角线遍历
Mar 02 Python
Python利用scapy实现ARP欺骗的方法
Jul 23 Python
学习Django知识点分享
Sep 11 Python
pyspark给dataframe增加新的一列的实现示例
Apr 24 Python
keras中的卷积层&amp;池化层的用法
May 22 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中的Class的几点个人看法
2006/10/09 PHP
wordpress之wp-settings.php
2007/08/17 PHP
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
Web程序工作原理详解
2014/12/25 PHP
php进程间通讯实例分析
2016/07/11 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
XP折叠菜单&amp;仿QQ2006菜单
2006/12/16 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
python Django模板的使用方法
2016/01/14 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
python递归全排列实现方法
2018/08/18 Python
python对矩阵进行转置的2种处理方法
2019/07/17 Python
Python itertools.product方法代码实例
2020/03/27 Python
家长学校工作方案
2014/05/07 职场文书
住房抵押登记委托书
2014/09/27 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
报到证办理个人委托书
2014/10/06 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书
暑期家教宣传单
2015/07/14 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS