Тема: VBScript: исследование веб-сайтов с помощью компонента Chilkat Spider
Бесплатный COM-сервер Chilkat Spider предоставляет функционал для исследования веб-сайтов. Дистрибутив (msi-инсталлятор) имеет размер около 1 Мб. Документацию можно найти здесь. Примеры можно найти здесь.
Возможности:
* Обход веб-сайта с учётом Robots.txt;
* Сбор внешних ссылок;
* Кеширование страниц для будущих обходов;
* Получение мета-информации страниц;
* Поддержка HTTPS;
* Исключение URL по указанным шаблонам;
* Исключение внешних ссылок по указанным шаблонам;
* Возможность задания тайм-аутов, счётчика и лимита страниц;
* Задание максимального размера URL для избежания зацикливания;
* Задание максимального размера страницы;
Простейший пример обхода. Скрипт обходит и выводит в консоль все URL, отвечающие шаблону *.htm*, начиная со страницы forum.script-coding.com/rules.html, в пределах домена script-coding.com. Найденные внешние ссылки, соответствующие тому же шаблону, также выводятся:
Set oSpider = CreateObject("Chilkat.Spider")
' инициализация; сброс настроек, сделанных методами
' AddAvoidOutboundLinkPattern, AddAvoidPattern и AddMustMatchPattern,
' если такие настройки были, и установка свойства Domain:
oSpider.Initialize "script-coding.com"
WScript.Echo "Домен: " & oSpider.Domain
' отправная точка исследования (фактически - добавление URL для обхода):
oSpider.AddUnspidered "http://forum.script-coding.com/rules.html"
' ограничивающий шаблон (действует и на внешние ссылки):
oSpider.AddMustMatchPattern "*.htm*"
Do While True
' получить очередной URL и пополнить внутренний список ссылок для обхода:
success = oSpider.CrawlNext()
If success = 1 Then
' очередной найденный URL:
WScript.Echo oSpider.LastUrl & " (осталось URL - " & oSpider.NumUnspidered & ")"
Else
If oSpider.NumUnspidered = 0 Then ' количество необойдённых URL
WScript.Echo "Обход завершён."
Else
WScript.Echo spider.LastErrorText ' последняя произошедшая ошибка
End If
Exit Do
End If
oSpider.SleepMs 1000 ' пауза в миллисекундах
Loop
WScript.Echo "Внешние ссылки:"
For i = 0 To oSpider.NumOutboundLinks - 1
Wscript.Echo oSpider.GetOutboundLink(i)
Next
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.