Если на сайте нет авторизации или каких-то действий, прежде чем появятся нужные ссылки, то, ИМХО, лучше использовать функцию InetRead() и паттерн к ней, в противном случае, кроме функции _IEBodyReadHTML() и паттерна к ней, есть еще варианты, достаточно сложные (TCP* функции, _WinHttp* функции, объекты WinHttp.WinHttpRequest.5.1 или MSXML2.ServerXMLHTTP.6.0 и т.д. и т.п.)цель такая - потом из этого исходника извлечь все ссылки.
Создавайте тему, если не получается самому получить все нужные ссылки.но вот как извлекать ссылки из исходника.. или создавать новую тему?
А если нужны не все ссылки, а только определенные? И через InetRead() гораздо быстрее.получать ссылки через IE то пример
Между For и Next (в перечислении коллекции ссылок) проверять или ID, или URL и т.д.А если нужны не все ссылки, а только определенные?
Я согласен.InetRead() гораздо быстрее
Func ReadPage($sSource); $sSource - URL сайта
Local $sText = InetRead($sSource,$DOWNLOADOPTION); $DOWNLOADOPTION -опции загрузки
Return BinaryToString($sText)
EndFunc
Local $sText = ReadPage($sSource)
Local $aMatches = StringRegExp($sText, $sPattern,1); $sPattern - шаблон для извлечения ссылок определенного вида; у меня же используется массив паттернов, который перебирается в цикле
; а так можно все ссылки получить - шаблон взят из справки
;Local $aMSSearchLinks = StringRegExp($sText, '(?si)(?:.*?)?(https?:\/\/[\w.:]+\/?(?:[\w\/?&=.~;\-+!*_#%])*)',3); массив ссылок
;_ArrayDisplay($aMSSearchLinks)
Старт=0.00351081836737291
Чтение первой страницы msdn =949.080406956511
Pattern [1]=<a href="(http://msdn.microsoft.com/en-us/library/windows/desktop/.+?)"
ссылка[1]=http://msdn.microsoft.com/en-us/library/windows/desktop/aa374973(v=vs.85).aspx
Поиск в первой странице msdn =949.571482675647
Скачиваем страницу описания с http://msdn.microsoft.com/en-us/library/windows/desktop/aa374973(v=vs.85).aspx
Ну можно сказать и так...А вы сравнивали InetRead и InetGet? Они наверно одинаковы.
начинает InetRead()
Старт=0.00351081836737291
Чтение первой страницы msdn =1313.06055152323
Pattern [1]=<a href="(http://msdn.microsoft.com/en-us/library/windows/desktop/.+?)"
ссылка[1]=http://msdn.microsoft.com/en-us/library/windows/desktop/dd162719(v=vs.85).aspx
Поиск в первой странице msdn закончен=1313.6130665638
далее работает InetGet()
Скачиваем страницу описания с http://msdn.microsoft.com/en-us/library/windows/desktop/dd162719(v=vs.85).aspx
Загрузка страницы=3128.47093766498
Открытие файла =3129.5882556104
Чтение из файла =3135.17352878059
Поиск в найденном =3138.57112325562
Запись найденного =3142.4251241184
----------------------------------
работает только InetGet()
Старт=0.0030719660714513
Скачиваем страницу описания с http://www.pinvoke.net/default.aspx/USER32.FillRect
Загрузка страницы=257.680024891702
Открытие файла =258.547197028443
Чтение из файла =261.113605254993
$sHREFs=<a href="http://www.pinvoke.net/default.aspx/Structures/RECT.html">RECT</a>
Поиск в найденном =268.217746221372
Запись найденного =272.354367962729