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

Discussion in 'SЕО - тонкости, методы раскрутки' started by Solide Snake, 23 Nov 2007.

  1. Solide Snake

    Solide Snake Banned

    Joined:
    28 Apr 2007
    Messages:
    382
    Likes Received:
    820
    Reputations:
    69
    Для нашей задачи нам понадобится небольшие познания в программировании на Delphi, бесплатные компоненты из набора .
    В самом начале нам требуется иметь установленную Delphi7, и наличие соединения с Интернет, для проверки работы программы.

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

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

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

    [​IMG]

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

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

    [​IMG]

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

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

    [​IMG]

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

    PHP:
    unit main;

    interface

    uses
      Windows
    MessagesSysUtilsVariantsClassesGraphicsControlsForms,
      
    DialogsStdCtrlsButtonsExtCtrlsComCtrls;

    type
      TForm1 
    = class(TForm)
        
    StatusBar1TStatusBar;
        
    Panel1TPanel;
        
    Edit1TEdit;
        
    SpeedButton1TSpeedButton;
        
    Memo1TMemo;
        
    IEParser1TIEParser;
      private
        { Private 
    declarations }
      public
        { Public 
    declarations }
      
    end;

    var
      
    Form1TForm1;

    implementation

    {$R *.dfm}

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

    PHP:
    procedure TForm1.SpeedButton1Click(SenderTObject);
    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

    PHP:
    procedure TForm1.IEParser1Anchor(SenderTObjecthRefTargetRelRev,
      
    UrnMethodsNameHostHostNamePathNamePortProtocolSearch,
      
    HashAccessKeyProtocolLongMimeTypeNamePropString;
      
    ElementTElementInfo);
    begin
       
    if Pos('google'href) = 0 then Memo1.Lines.Add(href);
       
    StatusBar1.SimpleText:='Find links: '+IntToStr(Memo1.Lines.Count+1);
    end;
    [​IMG]

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

    (c)
     
  2. sboy20042

    sboy20042 Banned

    Joined:
    7 Jul 2007
    Messages:
    318
    Likes Received:
    376
    Reputations:
    128
    ну это в кодинг скорее нада! а вообще статья гуд!
     
    2 people like this.
  3. Hellsp@wn

    Hellsp@wn Elder - Старейшина

    Joined:
    29 Apr 2007
    Messages:
    400
    Likes Received:
    153
    Reputations:
    48
    "Парсер Google за несколько минут на Delphi7"
    "\Borland\Delphi5\lib\EmbeddedWB_D2005\Source”

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