ANTICHAT

ANTICHAT (https://forum.antichat.io/index.php)
-   Песочница (https://forum.antichat.io/forumdisplay.php?f=189)
-   -   Софт для отправки пост запросов (https://forum.antichat.io/showthread.php?t=386850)

Martyn911 19.06.2013 13:51

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

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

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

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

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

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

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

OverLocker 18.07.2013 18:03

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

Ссылка

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

Файлы:

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

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

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

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

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

poster.py

Код:

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

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


Время: 18:43