Поиск по блогу

четверг, 22 января 2009 г.

Относительные ссылки при использовании coHTMLDocument

Задавшись вопросом, поднятым в комментариях к предыдущей записи, решила порыскать в сети. Да, в большинстве случаев люди обрабатывают ссылки вручную. Но есть еще один выход: добавить в HTML-код элемента тег "BASE" с указанием адреса страницы.

Изменим код, приведенный в качестве примера к предыдущей записи.
Вместо
v[0] := SLBody.Text;

Напишем:
v[0] := AddBASE(SLBody.Text,'http://adresa.yandex.ru/');


И отдельно процедурка, добавляющая тег BASE сразу после тега HEAD.

function AddBASE(PageText, BASEURL: String) : String;
var
Str : String;
begin
Str := '<base href="' + BASEURL + '">';
Result := StringReplace(PageText,'<head>',Str,[rfIgnoreCase]);
end;


Конечно, не совсем красиво, но зато работает, я проверила. DocElement.getAttribute('href',0) выдает ссылки в красивом виде:

parser yandex adresa

Это, в принципе, то же самое, что и обрабатывать каждую ссылку, но телодвижений меньше.

Чтобы быть в курсе обновлений блога, можно подписаться на RSS.
___

После переноса фида на Google, счетчик совсем сошел с ума :) Адрес фида немного изменился, так что желательно изменить адрес подписки на http://feeds2.feedburner.com/parsing-lessons. А если еще не подписались на обновления, но тематика блога вам интересна — подписывайтесь! :)

Статьи схожей тематики:



2 комментария:

  1. Пытаюсь воспользоваться примером Delphi 5 ругается на "SLBody".

    ОтветитьУдалить
  2. Проверяй чего из этих строк забыл:
    SLBody : TStringList;

    SLBody:=TStringList.Create;

    TStringList в 5-й делфе должен быть.

    ОтветитьУдалить

Комментарии модерируются, вопросы не по теме удаляются, троллинг тоже.

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

Поделиться