python批量发送请求并下载_【Python】有没有什么工具可以给某url批量发post请求?...

有个几十万行的文本文件,里面逐行有一些信息

有没有什么工具可以给某个url批量按照文本文件一行行发post请求呢?

求具体说明

回答

一个写的比一个短你们这是逼我啊 … 要比拼 Hello World 么 ..?

awk '{ system( "curl -d \"data=" $0 "\" http://url" ) }' file.txt

awk 单行搞定 …

有轮子的时候用轮子 … 没有轮子的时候就自己造一个轮子好了 …

好吧其实我就是突然有一点点闲时间可以帮你写写代码这样 …

/* put your text file location here ... */

define( 'TEXT_SRC', '/path/to/your.text.file.txt' );

/* put the url which you wanna post data to here ... */

define( 'DATA_URL', 'http://the.url.data/goes.to' );

/* put post field name here ... */

define( 'POST_PFX', 'data' );

/* read million data from source ... */

$text_src = file(

TEXT_SRC, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES

);

/* hey here comes cURL ... */

$curl = curl_init();

/* prepare cURL and make a very fashion UA header ... */

curl_setopt_array( $curl, [

CURLOPT_URL => 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 urllib

while 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 requests

file = open("text.txt")

for text in file.readlines():

data = {"data":text}

resp = requests.get(url=url, data=data)

print resp.text

file.close()

你们为什么一定要比短….

wget -b -q -O /dev/null --post-data="" -i urls_file

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值