PDA

Просмотр полной версии : Парсер Google за несколько минут на Delphi7


Solide Snake
23.11.2007, 23:11
Для нашей задачи нам понадобится небольшие познания в программировании на Delphi, бесплатные компоненты из набора .
В самом начале нам требуется иметь установленную Delphi7, и наличие соединения с Интернет, для проверки работы программы.

Для начала скачаем и установим их. Сам компонент расположен тут - http://bsalsa.com/DP/download.php?file=0.

Шаги инсталяции:

1.После скачивания, распакуйте в папку “..:\Borland\Delphi7\lib”
3. В Delphi выберите File –> “Open”

http://www.seocoder.org/wp-content/uploads/2007/04/d1.gif

Перейдите в папку (”..:\Borland\Delphi5\lib\EmbeddedWB_D2005\Sourc e”).

5.Выберите файл “EmbeddedWebBrowser_D7.dpk” и нажмите Open.

http://www.seocoder.org/wp-content/uploads/2007/04/d2.gif

6. Нажмите compile и install
7. Все, компонент установлен.
Если все прошло успешно, приступаем к написанию самой программы, так как подготовительный этап закончен.
Из этих компонентов для нашей задачи, нам нужен всего один - TextIEParser.

Создаем форму в Delphi. Помещаем на нее panel и на нее edit и speedbutton. Statusbar и еще memo - установив свойство Align в alClient. Не забываем и про наш IEParser.

http://www.seocoder.org/wp-content/uploads/2007/04/d3.gif

Меняем свойство caption у формы.
Получили такой листинг нашей формы:

unit main;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls;

type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
Panel1: TPanel;
Edit1: TEdit;
SpeedButton1: TSpeedButton;
Memo1: TMemo;
IEParser1: TIEParser;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

end.

Начнем методично добавлять функционал. Добавим событие на OnClick нашей SpeedButton. Делается это просто, двойной клик на нашей кнопке на форме.

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
// задаем как парсить гугл и текст запроса из Edit
IEParser1.URL:='http://www.google.com/ie?q='+Edit1.Text+'&num=100&hl=en&lr=&newwindow=1&c2coff=1';
// Запуск парсера
IEParser1.Go;
end;

Такой простой код в этой задаче нас устроит, он дает только 100 первых результатов. Большие возможности рассмотрим в следующих примерах, если этот будет полезен народу.

Сейчас наша задача выдрать код ссылок полученных и поместить это в Memo.
Открываем наш любимый браузер с таким запросом http://www.google.com/ie?q=inurl:bbs.cgi&num=100&hl=en&lr=&newwindow=1&c2coff=1
И бегом смотреть исходники страницы. Анализируя код html страницы приходим к выводу, что все что нам нужно есть в тегах A. И что те ссылки, что не ведут на google, нам и нужны.
Нам нужен event нашего IEParser - onAnchor

procedure TForm1.IEParser1Anchor(Sender: TObject; hRef, Target, Rel, Rev,
Urn, Methods, Name, Host, HostName, PathName, Port, Protocol, Search,
Hash, AccessKey, ProtocolLong, MimeType, NameProp: String;
Element: TElementInfo);
begin
if Pos('google', href) = 0 then Memo1.Lines.Add(href);
StatusBar1.SimpleText:='Find links: '+IntToStr(Memo1.Lines.Count+1);
end;

http://www.seocoder.org/wp-content/uploads/2007/04/d4.gif

Все - наш просто парсер готов!

(c) (http://www.seocoder.org/2007/04/18/parser-google-za-neskolko-minut-na-delphi7/)

sboy20042
23.11.2007, 23:16
ну это в кодинг скорее нада! а вообще статья гуд!

Hellsp@wn
24.11.2007, 00:55
"Парсер Google за несколько минут на Delphi7"
"\Borland\Delphi5\lib\EmbeddedWB_D2005\Source”

нестыковка получается =) ставить 2 версии дельфи для простенького
парсера?

xena-mil1
28.02.2008, 18:38
я могу сделать это более ефективно
в 2 запроса бровзеру


http://www.google.com/search?num=100&q=inurl:bbs.cgi

javascript:s="";for(i=0;i<document.links.length;i++)if((document.links[i].toString().indexOf("google")==-1)&&(document.links[i].toString().indexOf("/search")==-1) )s+=(document.links[i]+"<br>");document.write(s);



есть также на пхп, вытягивает 10 страниц по 100 ссылок и пишет их в файл
в добрые руки отдам бесплатно
кому нада - стукните на icq 26%76%574 (% заменить на 1)