
18.07.2013, 18:03
|
|
Новичок
Регистрация: 07.07.2012
Сообщений: 0
Провел на форуме: 0
Репутация:
0
|
|
Вот наверстал на коленке, быдлокод малость из-за глобалов
Ссылка
Необходим питон 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()
|
|
|