#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, и я стараюсь не смотреть на них напрямую. 😉