GoogleSnippets – сырцы, разбор полетов

by SeoCoder on Январь 31, 2008

Сколько как думаете кода в такой простой утилите?! 100-200-1000 строчек кода?! Ерунда все. Большая часть кода, без учёта того что генерит Delphi и среда и объявления переменных – это не больше 25 строк.

Сама утилита тут. В этой тулзе нам нужно создать форму, кинуть на нее – statusbar, edit, memo, одну кнопку и ieparser. Все комментарии отделены в тексте вот так – //. Продолжение под катом.

[code lang='delphi']
unit main;

interface

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

type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
Panel1: TPanel;
Memo1: TMemo;
Edit1: TEdit;
SpeedButton1: TSpeedButton;
Google: TIEParser;
procedure SpeedButton1Click(Sender: TObject);
procedure GoogleElement(Sender: TObject; ElementInfo: TElementInfo);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
{$R *.dfm}

// код обработчика нажатия на клавишу
procedure TForm1.SpeedButton1Click(Sender: TObject);
Var
fndPage : Integer;
lang : String;
tmp : String;
begin
lang:='en';
// дефолтный язык

tmp:=Edit1.Text;
// берем сам запрос - для которого искать текст из сниппетов

if (tmp[2] in ['a'..'y']) or (tmp[2] in ['A'..'?']) then lang:='ru';
// определяем язык для парсинга текста, автоматически
// по второй букве введенного слова

Memo1.Lines.Clear;
// очищаем результаты

StatusBar1.SimpleText:=Обрабатываем страницу - 1';
Google.URL:='http://www.google.com/search?as_q='+edit1.text+
'&hl='+lang+'&inlang='+lang+'&num=100&lr=lang_'+lang+'&filter=0';
Google.Go;
// задаем начальный урл и начинаем парсить наш текст.
// Как текст скачается, он переходит
// в обработчик onElement от ieParser

for fndPage:=2 to 9 do
// проходим по всем оставшимся 10 страницам
begin
StatusBar1.SimpleText:='Обрабатываем страницу - '+IntToStr(fndPage);
Google.URL:='http://www.google.com/search?as_q='+edit1.text
+'&hl='+lang+'&inlang='+lang+'&num=100&lr=lang_'+lang+'&filter=0&start='
+IntToStr(fndPage);
Google.Go;
end;
Memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+edit1.Text+'.txt');
// сохраняем результат в папку, где наша программа и с именем ключевика
ShowMessage(ExtractFilePath(Application.ExeName)+edit1.Text+'.txt Сохранен успешно.');
// Сообщаем юзеру, что все отлично.
end;

// Ну а это сам парсинг сниппетов. Ищем все элементы типа
// TD и class='J' - все что внутри и есть сниппет.
procedure TForm1.GoogleElement(Sender: TObject; ElementInfo: TElementInfo);
Var
tmpSnip : String;
i : Integer;
begin
if (UpperCase(ElementInfo.TagName) = 'TD')
and (UpperCase(ElementInfo.ClassName) = 'J') then
begin
tmpSnip:=ElementInfo.OuterText;
i:=Pos(chr(13), tmpSnip);
Delete(tmpSnip,i+1,Length(tmpSnip)-i);
Memo1.Lines.Add(tmpSnip);
end;
end;

end.
[/code]

В качестве домашнего задания – измените код так, чтобы можно было собирать сниппеты для кучи кеев. ;)

{ 1 trackback }

links for 2008-02-02
02.02.08 at 04:26

{ 10 comments… read them below or add one }

1 php-ешник 01.31.08 at 23:11

Вроде ничего сложного.
Думаю осилю :)

2 sd 02.01.08 at 22:35

примерно так на глаз
//добавляем в TForm1.SpeedButton1Click
for I := 0 to Memo1.Lines.Count – 1 do
begin
tmp:=Memo1.Lines.Strings[I];
// ……..
end;

3 SeoCoder 02.02.08 at 03:06

В это же Memo низзя – надо второе на форму поставить ))

4 Biclope 02.02.08 at 20:01

Впрочем, как и всегда: все гениальное – просто
:)

5 DIMKA 03.02.08 at 13:54

Может кто кинуть компилированный GoogleSnippets для нескольких кеев. И как бы его заставить работать через прокси, а то гугла банит…….

СПС Всем !

6 Разработчик сайтов 04.11.08 at 16:28

Щас попробую видоизменить это чудо, чтобы на выходе был обычный текст, для серо-белых проектов.

7 Schnaps 06.05.08 at 17:30

вот закуздрячил штукенцию пободрее, берите кто хотите. умеет парсить список кеев, сливать в один файл или в несколько (если в несколько, то количество определяется количеством кеев), имеется задержка между выпарсиваниями. слепил из того что было за час где-то… спасибо СеоКодеру =)

http://depositfiles.com/ru/files/5806146

8 blackhood 06.27.08 at 11:39

to Разработчик сайтов:
супер!!!!!! респект

9 blackhood 06.27.08 at 11:40

Ошибся…
to Schnaps*

10 blackhood 08.21.08 at 21:11

парсилка перестала работать :( ((

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="">