|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Проверка сайтов на наличие слова на странице |
|
Delphi - Проверка сайтов на наличие слова на странице
|
Пользователь Сообщения: 61 |
Профиль | Отправить PM | Цитировать Привет!
Есть хорошая программа для проверки списка сайтов на наличие конкретного слова на страницах этих сайтов XLink Checker 2.0 Решил для себя написать аналог этой программы чтоб добавить дополнительный функционал. Всё сделал кажется правильно но моя программа работает медленные XLink Checker 2.0 и делает много пропусков. Использовал Delphi7 и Synapse. Вот код моего потока и синхронизации: procedure TMultiThread.Execute; begin while Work do begin CS.Enter; inc(c); if c>Form1.MemoLoad.Lines.Count-1 then Work:= false; CS.Leave; if Work then begin HTTP:= THTTPSend.Create; HTTP.UserAgent:=UA[Random(18)]; if HTTP.HTTPMethod('GET', Form1.MemoLoad.Lines.Strings[c]) then begin Response:= TStringList.Create; Response.LoadFromStream(HTTP.Document); if Pos(Form1.EditFind.Text, Response.Text)<>0 then begin Rez:=1; link:= Form1.MemoLoad.Lines.Strings[c] + ' найдено ' + inttostr(c); end else begin Rez:=-1; link:= Form1.MemoLoad.Lines.Strings[c] + ' не найдено ' + inttostr(c); end; Synchronize(Sync); HTTP.Free; Response.Free; end; end; end; dec(Thread); if Thread=0 then Work:= False; Form1.ButtonFindStop.Enabled:=false; Form1.ButtonFindStart.Enabled:=true; end; procedure TMultiThread.Sync; begin case Rez of 1:begin Form1.MemoSave.lines.Add(link); Form1.LabelFind.Caption:=IntToStr(StrToInt(Form1.LabelFind.Caption)+1); end; -1:begin Form1.LabelNotExist.Caption:=IntToStr(StrToInt(Form1.LabelNotExist.Caption)+1); end; end; end; |
|
Отправлено: 09:31, 11-10-2014 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Решил проблему самостоятельно. Создал отдельную функцию проверки. В потоках вызываю эту функцию с параметрами а результат обрабатываю в синхронизации.
Скорость очень большая и валидные ссылки не пропускает. Поделюсь кодом функции может кому-то пригодится. function FindInSiteSourceCode(site, FindText:string):integer; var HTTP:THTTPSend; Source: Tstringlist; begin HTTP:= THTTPSend.Create; HTTP.UserAgent:=UA[Random(18)]; Result:= 5; if HTTP.HTTPMethod('GET', site) then begin Source:= Tstringlist.Create; Source.LoadFromStream(HTTP.Document); if (Source.Text='') then begin Source.Free; HTTP.Free; Result:= 0; end else if pos(FindText, Source.Text)<>0 then begin Source.Free; HTTP.Free; Result:= 1; end else begin Source.Free; HTTP.Free; Result:= -1; end; end; end; |
Отправлено: 21:37, 12-10-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Проверка компа на наличие Бяки | Tropikusik | Лечение систем от вредоносных программ | 2 | 24-07-2014 22:31 | |
CMD/BAT - Проверка на наличие папок в директории | feAre | Скриптовые языки администрирования Windows | 17 | 19-11-2013 17:31 | |
CMD/BAT - Проверка на наличие процесса | tazik9 | Скриптовые языки администрирования Windows | 0 | 23-01-2011 16:56 | |
VBS/WSH/JS - [решено] Проверка на наличие файлй | peretc001 | Скриптовые языки администрирования Windows | 2 | 20-01-2011 16:00 | |
CMD/BAT - Проверка на наличие какого-то текста | Magniy | Скриптовые языки администрирования Windows | 4 | 20-04-2010 18:26 |
|