Написать утилитку для вывода списка тем любого раздела нашего форума,
т.е. сверху комбобокс в котором список всех форумов, типа:
_http://areatest.ru/viewforum.php?f=43
_http://areatest.ru/viewforum.php?f=44
и т.д.... подфорумы не надо...
под комбобоксом табличка, типа StringGreed в которой 3 столбца:
1) название темы
2) количество ответов + прирост
3) количество просмотров + прирост
т.е. выбираем в комбобоксе форум... утилитка грузит из ini файла предыдущие данные по этому форуму
сохраненные ей же в прошлый запуск и заново этот форум парсит и выводит все данные в таблицу
типа:
----------------------------------------------------------------------
тема: | ответы/прирост | просмотры/прирост |
----------------------------------------------------------------------
Концепт документ | 5/1 | 3254/10 |
----------------------------------------------------------------------
...
Скрытый текст Получить данные с форума можно разными способами...
Можно анализировать код странички, типа:
(пример я набросал за 15 минут так что он сыроват)
Код: Выделить всё
...
WebBrowser1.Navigate('http://areatest.ru/viewforum.php?f=44');
...
procedure TfmMain.Button2Click(Sender: TObject);
const DelSym = 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮйцукенгшщзхъфывапролджэячсмитьбю1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm';
var
Text,Word: string;
i: integer;
begin
Text := WebBrowser1.OleObject.Document.documentElement.innerText;
while Pos(Chr(13),Text) > 0 do Delete(Text,Pos(Chr(13),Text),1);
while Pos(Chr(10),Text) > 0 do Delete(Text,Pos(Chr(10),Text),1);
// Если символ не есть буква/цифра русского/английского алфавита, то заменяем ее на запятую:
for i := 1 to Length(Text) do if Not Pos(Text[i],DelSym) > 0 then Text[i]:=',';
if Text[1] = ',' then Delete(Text,1,1);
while Pos(',,',Text) > 0 do Delete(Text,Pos(',,',Text),1);
repeat
Word:=Copy(Text,1,Pos(',',Text)-1);
Delete(Text,1,Length(Word)+1);
ListBox1.Items.Add(Word);
until Length(Text) = 0;
end;
Можно парсить через методы OleObject, типа:
Код: Выделить всё
try
for F1 := 0 to WebBrowser1.OleObject.Document.Forms.Length - 1 do begin
Form := WebBrowser1.OleObject.Document.Forms.Item(F1).Elements;
for i1 := 0 to Form.Length - 1 do
if (Form.item(i1).Tabindex = '6') then Form.item(i1).Click;
end;
except
end;
Можно круто на хрath написать, типа:
Код: Выделить всё
(_http://stackoverflow.com/questions/1406138/finding-elements-with-xpath-in-delphi)
procedure TfUpvs.Button1Click(Sender: TObject);
var
i: Integer;
xmlDoc: IXMLDOMDocument2;
objNode: IXMLDOMNode;
objListOfNodes: IXMLDOMNodeList;
begin
xmlDoc:= CoDOMDocument.Create();
xmlDoc.Async:= False;
xmlDoc.validateOnParse:= False;
xmlDoc.Load('c:\test.xml');
xmlDoc.SetProperty('SelectionLanguage', 'XPath');
objNode:= xmlDoc.SelectSingleNode('/CUP/LID');
Memo1.Lines.Add(objNode.text);
objListOfNodes:= xmlDoc.selectNodes('//CONTENTS/SOLID/@qty');
for i:=0 to objListOfNodes.Length-1 do
begin
Memo1.Lines.Add(objListOfNodes.Item.Text);
end;
Можно еще придумать методы....
Ну и конечно тяжелый компонент WebBrowser1, что я привел в примерах лучше заменить на невизуальный класс http...
Т.к. в команде у нас уже сайчас как минимум 2 программера Дельфи, то вот вам возможность заработать "Вклад")
Что эта утилитка даст?
Она даст администратору форума например, быть в курсе потоков юзеров, какие темы более интреесны, т.е. какие темы надо развивать и т.д. А значит улучшит качество работы и эффективность форума и даст дополнительный приток народу к нам,- вам в помощь)
Кстати:За рабочую версию этой утилитки: + 5 к "Вкладу"
За доведенную до моих требований версию : еще + 3 к "Вкладу"
Налетай!