Для нашей задачи нам понадобится небольшие познания в программировании на Delphi, бесплатные компоненты из набора
В самом начале нам требуется иметь установленную Delphi7, и наличие соединения с Интернет, для проверки работы программы.
Для начала скачаем и установим их. Сам компонент расположен тут - http://bsalsa.com/DP/download.php?file=0.
Шаги инсталяции:
1.После скачивания, распакуйте в папку “..:\Borland\Delphi7\lib”
3. В Delphi выберите File –> “Open”

Перейдите в папку (”..:\Borland\Delphi5\lib\EmbeddedWB_D2005\Source”).
5.Выберите файл “EmbeddedWebBrowser_D7.dpk” и нажмите Open.

6. Нажмите compile и install
7. Все, компонент установлен.
Если все прошло успешно, приступаем к написанию самой программы, так как подготовительный этап закончен.
Из этих компонентов для нашей задачи, нам нужен всего один - TextIEParser.
Создаем форму в Delphi. Помещаем на нее panel и на нее edit и speedbutton. Statusbar и еще memo - установив свойство Align в alClient. Не забываем и про наш IEParser.
![]()
Меняем свойство 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;

{ 3 trackbacks }
{ 23 comments… read them below or add one }
СпамЕлку давай!
уже завтра некий марио
будет продавать десктопный парсер написаный на делфе 
Да… парсить по одной странице это жестоко! Хоть цикл сделал бы
Сам марио пришел. Это пример для новичков. Причем рабочий. Изменить и сделать цикл - 2-3 строчки.
Кстати.
На очереди.
1. Мануал по сетапу freebsd для чайников как и я.
Установка с нуля на отдельный комп или vmware.
Идеально для отладки скриптов.
2. Парсер овертюры - за 5 минут.
Список можно продолжать.
Действительно, просто. За что люблю Дельфи, так это за скорость изготовления рабочего прототипа.
раз уж есть желание, то лучче сваяй статью где бы ты описывал нюансы настройки связки апач+мускл виндовой, потому как при грамотной настройке оных отличия от *никс систем - минимальны…
у нас народ как правило незнает что за зверь REGISTER_GLOBALS, не говоря уж про magic_quotes_gpc и т д… да и минимальный обзор возможностей .htaccess не помешал бы - например как влючить те же register_globals
Мануал по сетапу freebsd - было бы очень интересно, дома планируется выделенка, поэтому поднять сервак со скриптами и не зависить от хостеров, было бы гуд…
автору спасибо
мое имхо - если у тебя нет дома как минимум 2МБ канала анлимного, то даже не стоит думать о том чтоб с хостингов домой сезжать… канал не тот, а соответсвенно и пинг, и скорость загрузки и т д… на нормальном хостинге запрос чтоб узнать ПР сайта идет меньше секунды, тогда как у меня из дома(2мб) запрос бегает около 2-х сек…
сделай плз цикл.
У меня делфи 2006, чё то не получается проинсталировать этот компонент. Может для 2006 свой способ?
народ, а никто не пробовал делать например парсилку количества страниц в гугле по заданному кею?
я вот делаю но сильно мешает отсутствие документации по этому IEParser. даже на официальном сайте ее нет.
Спрашивай - отвечу
Я тут недавно написал небольшой парсер яши по нужному ключевику. Выдает топ10 и все бэки по ключевику на каждый сайт. Просто раньше юзал такую на raznoves.ru/scripts/ , а потом она стала косячить…
Если кому надо - . Пожелания и вопросы приветствуются *)
Расскажи плз как цикл сделать.
Какой именно цикл?
Народ, как бароться с этой фигней когда через нее парсят твой сайт. А то сервер просто дохнет…. Каждую секунду идет запрос.
Юрий. Имелся ввиду цикл в парсере, чтобы парсилос не первые 100 ссылкок а все в общем… Интересно было бы послушать как это сделать. Я так понимаю в том примере нужно цикл добавить который будет с каждой страницы в ответе гуглы выдирать ссылки?
Про цикл к парселке :
Кидаем на форму еще один 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);
Конечно немного не по-русски - но дюже народ хотел увидить реализацию цикла ))))
Полезный маиериал и ценный компонент! Автору - огромный респект!
Теперь пара слов по теме.
1. Не забывайте в Memo1 ставить горизонтальную прокрутку, иначе велика вероятность того, что счетчик напарсенных ссылок будет врать.
2. Цикл для сквозного парсинга (количество шагов) вполне можно не задавать вручную. Я, напр, реализовал его как While по условию признака последней страницы выдачи.
Можно выложить саму компоненту: EmbeddedWB ?
Сайт разработчика: bsalsa.com => закрыт
Спасибо!
лови = http://www.seocoder.org/EmbeddedWB_D2005.rar
Leave a Comment