Перечислить ссылки внутри табличной ячейки

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Перечислить ссылки внутри табличной ячейки

Сообщение pronto » 21.08.2009 (Пт) 17:31

Пытаюсь анализировать содержимое ячеек таблицы на html странице. До свойст и содержимого каждой ячейки конкретной таблицы докопаться получилось, а до ссылок, которые могут быть в ячейке — нет.
Код: Выделить всё
Dim Doc As IHTMLDocument2
Dim Tables As IHTMLElementCollection
Dim OneTable As IHTMLElement
Dim Table_TD As IHTMLElementCollection

Set Doc = WebBrowser1.Document
Set Tables = Doc.All.tags("table")
Set Table_TD = Tables.Item(8, 8).All.tags("td")

For i = 0 To Table_TD.length - 1
   With Table_TD.Item(i, 1)
      Debug.Print .innerText, .bgColor, .innerHTML
      ' .innerText = Some_Text
      ' .bgColor = #ffc0cb
      ' .innerHTML = <FONT face=Arial><FONT size=2><A href="http://www.*.html">Some_Text</A></FONT></FONT>
   End With
Next


На почве всего этого возникает закономерный вопрос. Как реализовать сабж? Как выдрать этот текст — http://www.*.html?
Вариант с перечислением всех ссылок документа возможен, но неудобен.

P.S. На момент создания темы у меня половина второго ночи, поэтому реагировать на ваши ответы буду только завтра :)
O, sancta simplicitas!

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Перечислить ссылки внутри табличной ячейки

Сообщение dr.MIG » 22.08.2009 (Сб) 14:39

Как вариант, перебирать все ссылки и проверять внутри какого элемента расположена ссылка.
Salus populi suprema lex

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Перечислить ссылки внутри табличной ячейки

Сообщение pronto » 22.08.2009 (Сб) 17:20

Вариант, но не подходит. Ячеек много, а к содержимому ячейки (разные названия) необходимо привязать одну или несколько ссылок из этой ячейки. То есть, я так понимаю, что средствами DOM это нельзя сделать, или я делаю преждевременные выводы?
Пока, как приемлемый вариант, рассматриваю следующую реализацию.
Получить innerHTML нужной ячейки и ручками откапывать в нём <a href></a>.
O, sancta simplicitas!

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Перечислить ссылки внутри табличной ячейки

Сообщение dr.MIG » 22.08.2009 (Сб) 19:38

Можно и с другой стороны. Т.е. получать ячейку таблицы, а затем перебирать все элементы, которые она содержит, проверяя ссылка ли это.
Salus populi suprema lex

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Перечислить ссылки внутри табличной ячейки

Сообщение pronto » 23.08.2009 (Вс) 3:24

После более внимательного изучения того, что пишет MSDN решение пришло в виде следующего колдунства. Оно сводится к тому, что имя класса у HTMLElement'a может меняться в рантайме и, соответственно, изменив имя элемента можно получить доступ к его конкретным свойствам, методам и событиям. Вот так...
Вот как это выглядит на практике.
Код: Выделить всё
Dim Doc As MSHTML.IHTMLDocument2 ' IHTMLDocument2

Dim Tables As IHTMLElementCollection
Dim OneTable As IHTMLElement

Dim Table_TD As IHTMLElementCollection
Dim TD_Elems As IHTMLElementCollection
Dim elem As IHTMLElement

Set Doc = WebBrowser1.Document
Set Tables = Doc.All.tags("table")

Set Table_TD = Tables.Item(8, 8).All.tags("td")
Set TD_Elems = Table_TD.Item(1, 1).All

' всё самое интересное в третьей строке
1 For Each elem In TD_Elems
2   If elem.tagName = "A" Then
3      elem.className = "link"     '  :wink:
4      Debug.Print elem.innerText, elem.href
     
5   End If
6 Next elem


Доктор, благодарю вас! 8)
O, sancta simplicitas!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 95

    TopList