Простой парсер, не могу получить href из html (DOM)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by strongmaster, 8 Aug 2015.

  1. strongmaster

    strongmaster New Member

    Joined:
    8 Aug 2015
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Всем привет. Помогите написать простенький парсер, не могу получить href в финале.
    Выдергивает все что Li, потом внутри в h3, а потом в A.

    Code:
            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 получается:
    Code:
    <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? Чето не пойму. Спасибо.
     
  2. i~DOS

    i~DOS Member

    Joined:
    26 Mar 2009
    Messages:
    42
    Likes Received:
    40
    Reputations:
    4
    Так работает?
    Code:
    sMemo2.Lines.Add(vTags1.item(i2).href);
    
     
  3. strongmaster

    strongmaster New Member

    Joined:
    8 Aug 2015
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Вылетает с method 'href' not supported by automation object
     
  4. i~DOS

    i~DOS Member

    Joined:
    26 Mar 2009
    Messages:
    42
    Likes Received:
    40
    Reputations:
    4
    Логично, так как в элементе "vTags1.item(i2)" содержится тег "a", то нужно сначала получить его через "getElementsByTagName('A')", и уже у полученного объекта получать значение поля "href". Среды разработки, чтобы проверить, под рукой нет, но, думаю, с кодом разобраться будет не сложно.
    Совет на будущее; для подобных целей лучше использовать специализированный DOM парсер, например этот.
     
  5. WPIWizard

    WPIWizard New Member

    Joined:
    30 Jun 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    функция Pars('href="',sMemo2.text,'"');
     
  6. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    _________________________