PDA

Просмотр полной версии : Софт для отправки пост запросов


Martyn911
19.06.2013, 13:51
Здравствуйте уважаемые форумчане, понадобилось отправить пост запрос на несколько тысяч сайтов и сохранить в файл те, ответ которых удовлетворяет требованиям.

Подробнее что надо:

1. Отправить пост запрос на скрипт http://site.ru/test.php

2. Получить html страницы

3. найти в коде заданный текст

4. если текст нашли сохранить ссылку в файл

Есть ли софт выполняющий что-то подобное или может скрипт, посоветуйте пожалуйста или поделитесь, заранее благодарен за отзывчивость

OverLocker
18.07.2013, 18:03
Вот наверстал на коленке, быдлокод малость из-за глобалов

Ссылка (http://wap4file.org/views/189)

Необходим питон 2.7

Файлы:

log.txt - сюда заносятся подходящие урлы

needText.txt - Сюда пишешь текст который надо искать в страницах

post.txt - пост запрос потипу var=value&var2=value2

urls.txt - Удрес к странице, с новой строки​

Доп настройки в poster.py его же и запускать через python poster.py

poster.py


Code:
import Spider, threading, time, sys

LOCK = threading.RLock()
THREADS_COUNT = 10
urlsFile = open("urls.txt", "r")
needText = ""

file = open("post.txt");
post = file.read()
file.close()

def main():
global THREADS_COUNT, needText
file = open("needText.txt", "r")
needText = file.read()
file.close()
for i in xrange(1, THREADS_COUNT):
print "Start "+str(i)
thread_i = threading.Thread(target=worker)
thread_i.start()
while threading.active_count() >1:
time.sleep(2)
print "End"
sys.exit(0)

def worker():
while True:
quest = getQuest()
if quest != False:
print "Thread get quest "+quest['url'].strip()
sp = Spider.Spider()
sp.SetPost(quest['post'])
sp.Go(quest['url'].strip())
pg = sp.readAll()
if pg.find(quest['need']) != -1:
logWrite(quest['url'].strip()+"\r\n");
print "Thread "+str(id)+" find "+quest['url']
else:
print "Url "+str(quest['url'])+" false"
sp.exit()
else:
return 0
def logWrite(str):
global LOCK
LOCK.acquire()

file = open("log.txt", "a")
file.write(str)
file.close()

LOCK.release()

def getQuest():
global urlsFile, LOCK, needText, post
LOCK.acquire()
quest = {}
quest['need'] = needText
quest['url'] = urlsFile.readline()
quest['post'] = post
if not quest['url']:
quest = False
LOCK.release()
return quest

main()

XAMEHA
18.07.2013, 18:14
Обычно в таких случаях пишут софт под конкретную задачу, используя любимый язык и либы.