首页>Python>正文

Python学习:批量发送post请求

时间:2017-12-28 08:54:33   来源:左眼神威的CSDN   阅读:

昨天学了一天的Python(我的生产语言是java,也可以写一些shell脚本,算有一点点基础),今天有一个应用场景,就正好练手了。

这个功能之前再java里写过,比较粗糙,原来是在我本机跑的,今天老大要求要随时保持请求,就用Python改写了下,省的又把一个有跟多杂项的jar包传到服务器,省空间又不乱,而且好读。

 

先附上java代码:


  1. package xxxxxx.base;  
  2.   
  3. import java.util.Random;  
  4.   
  5. import org.apache.commons.lang3.StringUtils;  
  6.   
  7. import haojianxiang.util.HttpRequest;  
  8.   
  9. public class CreateFeedbackData {  
  10.   
  11.     public static void main(String[] args) {  
  12.         while (true) {  
  13.             try {  
  14.                 Random r = new Random();  
  15.                 int sleep = r.nextInt(1200000) + 600000;  
  16.                 Thread.sleep(sleep);  
  17.                 post();  
  18.             } catch (Exception e) {  
  19.                 e.printStackTrace();  
  20.             }  
  21.         }  
  22.     }  
  23.       
  24.     public static void post(){  
  25.         String url = "http://111.111.111.111:8080/xxxx/post";  
  26.           
  27.         int[] types = {1234};  
  28.         int index = (int) (Math.random() * types.length);  
  29.         int type = types[index];  
  30.           
  31. //      String[] contents = {"-中文测试-,","-English Test-,","~!@#$%^&*()_;:'-\"<>?/|\\-,","          "};  
  32.         String[] contents = {"-中文测试-,","-English Test-,","~!@#$%,","          "};  
  33.           
  34.         StringBuffer content = new StringBuffer();  
  35.         content.append("haojianxiang test:");  
  36.         for (int i = 0; i < 10; i++) {  
  37.             int idx = (int) (Math.random() * contents.length);  
  38.             content.append(contents[idx]);  
  39.         }  
  40.           
  41.         String[] imgs = {"/Upload/appUpload/58c7b315cb39f.jpg",  
  42.                 "/Upload/appUploa/58cb467a69873.jpg",  
  43.                 "/Upload/appUpload/58afff0e99432.png",  
  44.                 "/Upload/appUpload/58b545539eb80.jpg",  
  45.                 "/Upload/appUpload/58b55d7c9e281.JPG",  
  46.         };  
  47.         StringBuffer img = new StringBuffer();  
  48.           
  49.         for (int i = 0; i < (int) (Math.random() * 4); i++) {  
  50.             int lucky = (int) (Math.random() * 2);  
  51.             if (lucky == 1) {  
  52.                 int idx = (int) (Math.random() * imgs.length);  
  53.                 img.append(imgs[idx]);  
  54.                 img.append(",");  
  55.             }  
  56.         }  
  57.         String imgStr = "";  
  58.         if (StringUtils.isNotBlank(img)) {  
  59.             imgStr = img.substring(0, img.length()-1);  
  60.         }  
  61.         String param = "{\"req\":{\"userId\":xxxxxx}," +  
  62.                 "\"data\":{"\"fbType\":" + type + ",\"fbContent\":\""+content.toString()+  
  63.                 "\",\"fbPic\":\""+imgStr+"\"}}";  
  64.         String rst = HttpRequest.sendPost(url, param);  
  65.         System.out.println("TIME--"+ System.currentTimeMillis() + " result:" + rst);  
  66.     }  
  67.   
  68. }  
 


 

(代码里的参数地址等我已做了隐藏,json格式可能不准确了,无所谓)

 

 

接下来上Python代码:

 

[python] view plain copy
 
  1. #!/usr/bin/env python  
  2. # -*- coding: utf-8 -*-  
  3.   
  4. import random  
  5. import urllib  
  6. import urllib.request  
  7. import time  
  8.   
  9. def postFeedBack():  
  10.     url = "http://111.111.111.111:8080/xxxx/post"  
  11.   
  12.     type = int(random.uniform(1,5))  
  13.     contents = ["-中文测试-,","-English Test-,","~!@#$%,","     "]  
  14.     content = "haojianxiang test:"  
  15.     for i in range(0,10):  
  16.         content += random.choice(contents)  
  17.   
  18.     img = ""  
  19.     imgs = ["/Upload/58c7b315cb39f.jpg",  
  20.             "/Upload/58cb467a69873.jpg",  
  21.             "/Upload/58afff0e99432.png",  
  22.             "/Upload/58b545539eb80.jpg",  
  23.             "/Upload/58b55d7c9e281.JPG"]  
  24.     for i in range(0,3):  
  25.         lucky = int(random.uniform(0,2))  
  26.         if lucky == 1:  
  27.             img += random.choice(imgs)  
  28.             img += ","  
  29.     img = img[:-1]  
  30.     data = "{\"req\":{\"userId\": xxx},"  
  31.     data += "\"data\":{  
  32.     data += "\"fbType\":"  
  33.     data += str(type)  
  34.     data += ",\"fbContent\":\""  
  35.     data += content  
  36.     data += "\",\"fbPic\":\""  
  37.     data += img  
  38.     data += "\"}}"  
  39.   
  40.     pdata = bytes(data,encoding="utf-8")  
  41.     f = urllib.request.urlopen(url,pdata)  
  42.   
  43.     result = f.read()  
  44.     result = result.decode('UTF-8')  
  45.     print(result)  
  46.   
  47. if __name__ == "__main__":  
  48.     while True:  
  49.         st = int(random.uniform(600,1800))  
  50.         print("sleep:",st)  
  51.         time.sleep(st)  
  52.         postFeedBack()  

Python的写法确实很简洁高效(java代码里post的逻辑,我还是调用了自己的一个工具类,实际代码要更多),今后打算把Python作为优先脚本语言,处理简单问题很快。上海尚学堂python
分享:0