Софт для отправки пост запросов

Discussion in 'Песочница' started by Martyn911, 19 Jun 2013.

  1. Martyn911

    Martyn911 New Member

    Joined:
    10 Jan 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте уважаемые форумчане, понадобилось отправить пост запрос на несколько тысяч сайтов и сохранить в файл те, ответ которых удовлетворяет требованиям.
    Подробнее что надо:
    1. Отправить пост запрос на скрипт http://site.ru/test.php
    2. Получить html страницы
    3. найти в коде заданный текст
    4. если текст нашли сохранить ссылку в файл
    Есть ли софт выполняющий что-то подобное или может скрипт, посоветуйте пожалуйста или поделитесь, заранее благодарен за отзывчивость
     
  2. OverLocker

    OverLocker New Member

    Joined:
    7 Jul 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Вот наверстал на коленке, быдлокод малость из-за глобалов
    Ссылка
    Необходим питон 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()
    
     
    #2 OverLocker, 18 Jul 2013
    Last edited: 18 Jul 2013
  3. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Обычно в таких случаях пишут софт под конкретную задачу, используя любимый язык и либы.
     
Loading...