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实现每次处理一个字符的三种方法
Oct 09 Python
浅谈python装饰器探究与参数的领取
Dec 01 Python
基于python神经卷积网络的人脸识别
May 24 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
Oct 26 Python
Python中的取模运算方法
Nov 10 Python
Django CSRF跨站请求伪造防护过程解析
Jul 31 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
详谈tensorflow gfile文件的用法
Feb 05 Python
python实现根据给定坐标点生成多边形mask的例子
Feb 18 Python
python网络编程:socketserver的基本使用方法实例分析
Apr 09 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
Oct 28 Python
如何基于Python按行合并两个txt
Nov 03 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 fckeditor 调用的函数
2009/06/21 PHP
浅析PHP原理之变量(Variables inside PHP)
2013/08/09 PHP
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
关于COOKIE个数与大小的问题
2011/01/17 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
解决vue单页面修改样式无法覆盖问题
2019/08/05 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
在Python的Django框架中创建语言文件
2015/07/27 Python
SQLite3中文编码 Python的实现
2017/01/11 Python
python中如何使用朴素贝叶斯算法
2017/04/06 Python
浅谈python迭代器
2017/11/08 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
2020/07/14 Python
python实现简单的五子棋游戏
2020/09/01 Python
大专生简历的自我评价
2013/11/26 职场文书
毕业自荐信
2013/12/16 职场文书
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers