Здравствуйте уважаемые форумчане, понадобилось отправить пост запрос на несколько тысяч сайтов и сохранить в файл те, ответ которых удовлетворяет требованиям. Подробнее что надо: 1. Отправить пост запрос на скрипт http://site.ru/test.php 2. Получить html страницы 3. найти в коде заданный текст 4. если текст нашли сохранить ссылку в файл Есть ли софт выполняющий что-то подобное или может скрипт, посоветуйте пожалуйста или поделитесь, заранее благодарен за отзывчивость
Вот наверстал на коленке, быдлокод малость из-за глобалов Ссылка Необходим питон 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()