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

by SeoCoder on Апрель 18, 2007

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

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

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

1.После скачивания, распакуйте в папку «..:\Borland\Delphi7\lib»
3. В Delphi выберите File –> «Open»
d1.gif
Перейдите в папку («..:\Borland\Delphi5\lib\EmbeddedWB_D2005\Source»).

5.Выберите файл «EmbeddedWebBrowser_D7.dpk» и нажмите Open.
d2.gif
6. Нажмите compile и install
7. Все, компонент установлен.
Если все прошло успешно, приступаем к написанию самой программы, так как подготовительный этап закончен.
Из этих компонентов для нашей задачи, нам нужен всего один – TextIEParser.

Создаем форму в Delphi. Помещаем на нее panel и на нее edit и speedbutton. Statusbar и еще memo – установив свойство Align в alClient. Не забываем и про наш IEParser.
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;

d4.gif
Все – наш просто парсер готов!

{ 3 trackbacks }

Самые читаемые посты на блогах
10.31.07 at 01:49
Все об Интернет-маркетинге » Самые читаемые посты на блогах
11.29.07 at 03:01
buy tramadol online
09.30.08 at 16:04

{ 24 comments… read them below or add one }

1 div72 04.18.07 at 16:24

СпамЕлку давай!

2 false 04.18.07 at 17:39

уже завтра некий марио ;) будет продавать десктопный парсер написаный на делфе :)

3 VIP 04.18.07 at 21:34

Да… парсить по одной странице это жестоко! Хоть цикл сделал бы

4 admin 04.18.07 at 22:29

Сам марио пришел. Это пример для новичков. Причем рабочий. Изменить и сделать цикл – 2-3 строчки.

5 admin 04.18.07 at 23:43

Кстати.
На очереди.
1. Мануал по сетапу freebsd для чайников как и я.
Установка с нуля на отдельный комп или vmware.
Идеально для отладки скриптов.
2. Парсер овертюры – за 5 минут.
Список можно продолжать.

6 Nike59 04.19.07 at 00:40

Действительно, просто. За что люблю Дельфи, так это за скорость изготовления рабочего прототипа.

7 false 04.19.07 at 03:22

раз уж есть желание, то лучче сваяй статью где бы ты описывал нюансы настройки связки апач+мускл виндовой, потому как при грамотной настройке оных отличия от *никс систем – минимальны…
у нас народ как правило незнает что за зверь REGISTER_GLOBALS, не говоря уж про magic_quotes_gpc и т д… да и минимальный обзор возможностей .htaccess не помешал бы – например как влючить те же register_globals

8 morze 04.19.07 at 08:44

Мануал по сетапу freebsd – было бы очень интересно, дома планируется выделенка, поэтому поднять сервак со скриптами и не зависить от хостеров, было бы гуд…

9 good 04.19.07 at 11:45

автору спасибо

10 false 04.19.07 at 14:35

мое имхо – если у тебя нет дома как минимум 2МБ канала анлимного, то даже не стоит думать о том чтоб с хостингов домой сезжать… канал не тот, а соответсвенно и пинг, и скорость загрузки и т д… на нормальном хостинге запрос чтоб узнать ПР сайта идет меньше секунды, тогда как у меня из дома(2мб) запрос бегает около 2-х сек…

11 Seom 04.22.07 at 19:26

сделай плз цикл.

12 lextorn 04.27.07 at 07:10

У меня делфи 2006, чё то не получается проинсталировать этот компонент. Может для 2006 свой способ?

13 wleader 05.03.07 at 15:08

народ, а никто не пробовал делать например парсилку количества страниц в гугле по заданному кею?
я вот делаю но сильно мешает отсутствие документации по этому IEParser. даже на официальном сайте ее нет.

14 admin 05.03.07 at 19:33

Спрашивай – отвечу

15 Юрий 05.06.07 at 12:00

Я тут недавно написал небольшой парсер яши по нужному ключевику. Выдает топ10 и все бэки по ключевику на каждый сайт. Просто раньше юзал такую на raznoves.ru/scripts/ , а потом она стала косячить…

Если кому надо – http://anna.dotfix.ru/check/ . Пожелания и вопросы приветствуются *)

16 Andrew 05.11.07 at 22:01

Расскажи плз как цикл сделать.

17 Юрий 05.16.07 at 07:24

Какой именно цикл?

18 Андрей 05.29.07 at 07:26

Народ, как бароться с этой фигней когда через нее парсят твой сайт. А то сервер просто дохнет…. Каждую секунду идет запрос.

19 Stas 06.24.07 at 15:18

Юрий. Имелся ввиду цикл в парсере, чтобы парсилос не первые 100 ссылкок а все в общем… Интересно было бы послушать как это сделать. Я так понимаю в том примере нужно цикл добавить который будет с каждой страницы в ответе гуглы выдирать ссылки?

20 DeV 07.09.07 at 16:22

Про цикл к парселке :
Кидаем на форму еще один Edit для количества страниц (или можно жестко задать в процедуре)
Обьявляем переменную count и page
Присваиваем ей значение количества страниц с Edit’a или вручную.

Меняем немного запрос

IEParser1.URL:=’http://www.google.com/ie?q=’+Edit1.Text+’&num=100&hlen&lr=&c2coff=1&start=’+page

создаем цикл (по FOR или While – фиолетово ) и меняем переменную count с дискретностью 1 и увеличиваем переменную page : page :=inttostr(count*100);

Конечно немного не по-русски – но дюже народ хотел увидить реализацию цикла ))))

21 Adm123 12.26.07 at 09:56

Полезный маиериал и ценный компонент! Автору – огромный респект!
Теперь пара слов по теме.
1. Не забывайте в Memo1 ставить горизонтальную прокрутку, иначе велика вероятность того, что счетчик напарсенных ссылок будет врать.
2. Цикл для сквозного парсинга (количество шагов) вполне можно не задавать вручную. Я, напр, реализовал его как While по условию признака последней страницы выдачи.

22 Рустам 03.17.08 at 09:57

Можно выложить саму компоненту: EmbeddedWB ?
Сайт разработчика: bsalsa.com => закрыт

Спасибо!

23 SeoCoder 03.17.08 at 10:56
24 Andrey 07.31.10 at 04:26

Все сделал как написано, но при запуске ругается, пишет undeclared identifier ‘go’ на строчку IEParser1.Go; подскажите пожалуйста, в чем дело

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">