Tcl Tk показывает все доступные ссылки

#url #hyperlink #tree #tcl #tk

#url #гиперссылка #дерево #tcl #tk-toolkit

Вопрос:

Есть ли в Tcl / Tk функция для отображения всех доступных URL-адресов из ссылки? Я хочу начать программировать webcrawler с некоторыми функциями.

 For example:
the user types this:
"www.testsite.com"
and he will get that:
"www.testsite.com/dir1/"
"www.testsite.com/dir2/"
e.g.
  

Или лучше запрограммировать его на другом языке, таком как phyton?

br

Ответ №1:

Это довольно легко сделать с помощью пакетов http и tDOM. Вам просто нужно немного знать XPath…

 package require http
package require tdom

set tok [http::geturl http://example.com/index.html]
set html [http::data $tok]
http::cleanup $tok

set doc [dom parse -html $html]
foreach anchor [$doc selectNodes "//a"] {
    puts [$anchor @href]
}
  

Комментарии:

1. Похоже, это работает, когда я запускаю его на главной странице корпоративной интрасети, хотя я не думаю, что буду распространять список ссылок…

2. Если в документе есть a элементы без href атрибутов (например, привязки имен), можно использовать foreach href [$doc selectNodes {//a/@href}] {puts [lindex $href end]} .

3. @PeterLewerin Я думаю , что в этом случае лучше всего использовать XPath //a[@href] ; вам не нужны узлы атрибутов, вы просто хотите указать, что они есть.

4. Это тоже работает. Когда я просто хочу значение атрибута и не забочусь об узле, я делаю это, как в моем предыдущем комментарии.

5. Просто узлы атрибутов странные в DOM, и я стараюсь не смотреть на них напрямую. 😉