Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Простой парсер, не могу получить href из html (DOM)  (Прочитано 5531 раз)
0 Пользователей и 1 Гость смотрят эту тему.
strongmaster
Новенький

ru
Offline Offline

« : 08-08-2015 14:18 » 

Всем привет. Помогите написать простенький парсер, не могу получить href в финале.
Выдергивает все что Li, потом внутри в h3, а потом в A.

Код:
        vTags := WebBrowser1.OleObject.Document.getElementsByTagName('Li');
        n1:=vTags.Length;

        if n1>0 then
        begin

          for i1:=0 to n1-1 do
          begin
          vTags1 := vTags.item(i1).getElementsByTagName('H3');
          n2:=vTags1.Length;

            if n2>0 then
            begin

              for i2:=0 to n2-1 do
              begin
              sMemo2.Lines.Add(vTags1.item(i2).InnerHTML);
              end;

            end;

          end;

        end;

В sMemo2 получается:
Код:
<A href="http://www.google.ru/url?url=http://www.elle.ru/tests/&amp;rct=j&amp;frm=1&amp;q=&amp;esrc=s&amp;sa=U&amp;ved=0CBMQFjAAahUKEwj4n4380ZnHAhWI2SwKHdhEB2A&amp;usg=AFQjCNFKGc7G2o3Ta0OKGyFYhC8EjSKUHg" target=_blank><B>?????</B> ??????: ?????? ??????????????? <B>?????</B> ?????????, ??? <B>...</B></A>
            

Как получить href? Чето не пойму. Спасибо.
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #1 : 10-08-2015 09:02 » new

Код:
uses
  MSHTML;

procedure TForm1.Button2Click(Sender: TObject);
begin
  WebBrowser1.Navigate('forum.shelek.ru');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  htmlDoc: IHTMLDocument2;
  allLinks: IHTMLElementCollection;
  iLink: IHTMLElement;
  url: String;
  i: integer;
begin
  Memo1.Lines.Clear;
  Memo1.Lines.BeginUpdate;
  try
    htmlDoc := WebBrowser1.Document as IHTMLDocument2;
    allLinks := htmlDoc.Links;
    for i := 0 to allLinks.length - 1 do begin
       iLink := allLinks.Item(i,'') as IHTMLElement;
       Memo1.Lines.Add (iLink.outerHTML);
    end;
  finally
    Memo1.Lines.EndUpdate;
  end;
end;

если нужен не html-текст href, а текст между <a ..>..</a>, то вместо iLink.outerHTML можно юзать iLink.ToString.

по сабжу: TWebBrowser, OleObject и его свойства

З.Ы. то, что Вы делаете - это не DOM, это "восход солнца вручную" Ага
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines