有個幾十萬行的文字檔,裡面逐行有一些資訊
有沒有什麼工具可以給某個url批量按照文字檔一行行發post請求呢?
求具體說明
回複內容:
有個幾十萬行的文字檔,裡面逐行有一些資訊
有沒有什麼工具可以給某個url批量按照文字檔一行行發post請求呢?
求具體說明
一個寫的比一個短你們這是逼我啊 ... 要比拼 Hello World 麼 ..?
awk '{ system( "curl -d \"data=" $0 "\" http://url" ) }' file.txt
awk 單行搞定 ...
有輪子的時候用輪子 ... 沒有輪子的時候就自己造一個輪子好了 ...
好吧其實我就是突然有一點點閑時間可以幫你寫寫代碼這樣 ...
DATA_URL, CURLOPT_USERAGENT => 'Mozilla/1.22 (compatible; MSIE 2.0; Windows 3.1)', CURLOPT_RETURNTRANSFER => 1, CURLOPT_POST => 1, ] );/* something to handle cURL result ... */$callback = function( $result ) { return;};/* time for our BIG LOOOOOOOP ! */foreach( $text_src as $data ) { /* fill data ... */ curl_setopt( $curl, CURLOPT_POSTFIELDS, POST_PFX . '=' . $data ); /* and send them out ! */ $callback( curl_exec( $curl ) );}/* you have had a long flight ... time for rest ... */curl_close( $curl );
啟動並執行話需要 php 5.4.0 以上的版本和 cURL 擴充 ... 前三行是配置區需要自行修改 ...
另外程式是以犧牲記憶體為代價提升效率的 ... 因為我覺得說只有幾十萬行的話應該檔案不會太大 ...
程式會把那個文字文件一股腦讀進記憶體 ... 所以如果要處理更多資料的話還要修改 ...
恩 ... 就是這樣 ... 看看是不是你想要的效果呢 ..?
這種事情太適合用PYTHON來實現了。簡單的代碼如下:
text = open("__init__.py")import urllibwhile True: line = text.readline() if not line: break params = urllib.urlencode({'arg': line}) f = urllib.urlopen("http://UrUrl", params) print f.read()text.close()
如果需要的話還可以加入連線逾時然後重新發起請求,還可以使用多線程來減少整個的時間。
不太清楚你說的是一次 HTTP 要求還是多次請求。如果需要一次請求發送幾十萬行的文本資料,中間非常容易斷掉。如果是多次請求,每次請求發送一行文本資料,可以試試看 curl 。不同的程式設計語言都有不同的實現方法,具體請查閱對應語言的官方文檔。
nodejs:
lineArray = []request = require 'request'lineArray.forEach (line)-> request.post line
試試apache的ab,或者類似的siege, http_load
js: for(var i=0;i
import requestsfile = open("text.txt")for text in file.readlines(): data = {"data":text} resp = requests.get(url=url, data=data) print resp.textfile.close()
你們為什麼一定要比短....
wget -b -q -O /dev/null --post-data="" -i urls_file