Берясь за продвижение сайта бывает полезно оценить, какие страницы сами поисковики считают соответствующими данному запросу и следовательно или двигать эти страницы, или прикладывать усилия для смены целевой страницы.
В этой записи я расскажу как определить какие страницы наиболее релевантны определенным запросам. (По мнению гугла)
Автор: Elsper.ru
Возникла тут у меня задача обработать 103943 файла расположенных в 2618 папках.
И хотя у меня есть процедура для того чтобы получить список всех файлов задача требует чтобы все файлы были в одной папке.
Ну раз требует, то сделаем. За основу взял ту же процедуру, что выложил по ссылке выше.
Подумав немного получил на выходе:
Автор: Elsper.ru
Работа с JPG в Delphi (библиотека GDI+)
04.08.2011
Решил я тут поковыряться в своих прогах, а они отказываются компилиться из за отсутсвия модулей GDIPAPI, GDIPOBJ и GDIPUTIL. Дело в том, что в последних версиях я юзал библиотеку GDI+, которая не установлена ни на одном из обоих ноутов.
Ну установил конечно, а вместе с тем решил, что можно ею поделиться с народом.
Все же представляемая по умолчанию работа только с bmp (в делфи 7) явно устарела.
С самого начала выложу библиотеку. Скачивайте
А теперь пара примеров работы с ней
Автор: Elsper.ru
Скрытая загрузка картинок на PHP
10.02.2011
Представляю вашему вниманию один очень простой код, который тем не менее открывает не хилые перспективы в использовании картинок в дорвеестроении.
<?
{$fp = fopen($_SERVER['DOCUMENT_ROOT'].’/img.php’, ‘w+’);
fwrite($fp, ‘<? header(«Content-type: image/gif»); readfile ($_SERVER["DOCUMENT_ROOT"].»/fotka/1.jpeg»); ?>’);
fclose($fp);}
echo (‘<img src=img.php>’);
?>
Чем этот код так замечателен? Читать полностью »
Автор: Elsper.ru
Процедура чтобы грабить.
16.01.2011
Я уже писал ранее как очень легко можно скачать баш.
Зачем тогда нужно еще что-то, если тот код работает?
Дело в том что иногда страницы не загружаются, сервак там затупит или еще что-то печальное. И парсер виснет, ну или в лучшем случае переходит на следующий адрес. Вот и я с такой проблемой столкнулся. Можно было конечно удовлетвориться и тем что скачал, но…
Я написал полноценную процедуру, которую можно использовать почти «как есть». Лишь подкорректировав урл и номера страниц. Минус программы в том, что она парсит урлы по шаблону
адрес_сайта_всякие_параметры=1
адрес_сайта_всякие_параметры=2
К счастью основная часть динамических сайтов имеет именно такую структуру, и даже вордпресс со включенным ЧПУ можно парсить по «сайт.рф/?p=номер» (Но там есть свои сложности)
Короче код:
procedure pars;
var i:integer;
idhttppars:Tidhttp;
spisok,textik:TStringList;
begin
// инициализация
textik:= TStringList.Create;
spisok:= TStringList.Create;
idhttppars:=tidhttp.Create(nil);
idhttppars.HandleRedirects:=True;
idhttppars.ReadTimeout := 3000;
if FileExists(‘papka/’)= false then // Задаем название папки куда будем сохранять скачанные страницы
mkdir(‘papka’);
for i:=1 to 1000 do // здесь задаем циферки
begin
spisok.Append(inttostr(i));
end;
// конец инициализайции.
i:=-1;
while i < spisok.Count-1 do
begin
i:=i+1;
//form1.button1.Caption:= inttostr(i)+’/'+inttostr(spisok.Count-1); // Это индикатор выполнения. Если хотите подставьте вместо батон1, что нибудь другое и раскомментируйте строку.
application.ProcessMessages;
if FileExists(‘papka/’+spisok[i]) then
begin
spisok.Delete(i);
i:=i-1;
end
else
begin
try
textik.Text:=idhttppars.Get(‘урл=’+spisok[i]); // Здесь конструируем адрес страницы
textik.SaveToFile(‘papka/’+spisok[i]);
except end;
end;
end;
idhttppars.Free ;
textik.Free;
i:=spisok.Count-1;
//form1.Memo1.Lines:=spisok; // это один из инструментов отладки и наблюдения за работой процедуры можно удалить, можно наблюдать.
spisok.Free;
if i < 1 then application.Terminate else pars; // в конце парсинга процедура вызывает закрытие проги, если вы этого не хотите, то удалите вызов application.Terminate
end;
Не забудьте добавить в uses модуль IdHTTP, если его там еще нет.
Конечно можно упростить например вынести инициализацию и освобождение в отдельные части, но тогда это удобнее всего делать в классе формы. То есть переменные описать там где описываются общие переменные формы, инициализацию и первичное заполнение массива ( я их даже обозначил для вашего удобства) можно в tform1.FormCreate засунуть. А саму процедуру вызывать например с кнопки и в ней написать:
pars;
idhttppars.Free ;
textik.Free;
spisok.Free;
Соответственно убрав эти три строки из тела процедуры. Но мне захотелость сделать именно в виде автономной процедуры
Автор: Elsper.ru