![]() |
Скачиваине странички целиком
Доброго времени суток, форумчане. Нужно скачать страницу сайта т.е. повторить действия браузера по скачиванию страницы целиком. "Только HTML" - сайт отдает страницу для роботов =) Или прошу пнуть в правильном направлении. Пока я не нашел примеров со скачиванием страницы целиком. Все найденные мной скрипты утыкаются в страницу для роботов. Буду благодарен любой помощи. Wget мне не смог помочь
Что будет сделано дальше уже посредством батника, после скачивания страницы: Открытие html, поиск класса, копирование с него зачения href в переменную, wget`ом скачать переменную |
|
jack_nuclear, так зачем Вам тогда «скачивание всего целиком», если Вы парсить будете только сам html? И — давайте конкретику, Url.
|
DJ Mogarych, принято. ковыряю доки. отпишу, если получится и закрою тему =)
Iska, а потому, что только в этом случае сайт отдает нужный мне класс =) Пример: https://wgmods.net/22/ Класс: ModDetails_hidden--2Rtru |
DJ Mogarych, никак повершелл не смог... все равно нужна помощь =)
|
|
DJ Mogarych, там сайт отдает инфоЮ а в моем случае НЕТ. иначе я бы просто wget использовал и не задавал вопросов =)
|
jack_nuclear, итак, по порядку.
Во-первых, это ни разу не «отдаётся страница для роботов». Это обычное содержимое, который получает любой клиент в ответ на свой http-запрос. Это надо Вам чётко и точно понимать. Во-вторых, после того, как данное содержимое получено, для клиентов, наподобие wget.exe, curl.exe, менеджеров загрузки и т.п. всё закончено. По мета-тэгам (или строя свои собственные предположения при отсутствии оных) они определяют, что именно им, собственно, было передано, сохраняют (возможно, перекодировав) это содержимое в файл потребного формата и заканчивают на этом свою работу. Они не занимаются ни парсингом содержимого, ни его размещением в окне — рендеринг (если это содержимое — html), ни исполнением скриптов. Другое дело — браузеры. Получив содержимое, они начинают его парсить, выявляя все внешние вставки (например, ссылки на таблицы стилей, ссылки на изображения, ссылки на скрипты и т.п.) и загружая их. После чего начинают размещение содержимого в своём окне. Затем, когда доходит дело, начинается исполнение скриптов, которое может вмешиваться непосредственно и в само содержимое html-страницы, подчас радикально меняя его. В том числе, появляющиеся в содержимом новые скрипты могут перезапускать весь процесс заново. В Вашем примере именно это и происходит — ссылка с классом ModDetails_hidden--2Rtru не содержится непосредственно в полученном html-коде страницы, а генерируется скриптом на клиенте, исполняющемся в браузере. Посему, можно сделать, например, так: Скрытый текст
Код:
Set-Variable -Name 'READYSTATE_COMPLETE' -Option 'Constant' -Value 4 ![]() Предугадать заранее, сколько приседаний «Ку»: Скрытый текст
Код:
for($i = 0; $i -le 5; $i++) { понадобится сделать, пока в теле страницы не появится потребный элемент, в общем и целом — невозможно. |
Iska, просто монстр! дай бог здоровья. отписал в лс пару уточняющих вопросов =)
|
jack_nuclear, личка у меня «забита» доверху, пишите на почту или непосредственно сюда.
|
Iska, почта заканчивается на 3090. Не хочу засирать тему тут ибо вы уже дали готовый код. Если посчитаете дальнейшее обсуждение примером для других - не вопрос. можно и тут
|
Iska, Доброго времени суток. Под powershell 7 не работает. Пишет
Код:
Cannot find an overload for "getElementsByClassName" and the argument count: "1" Document : System.__ComObject У PS5 Document : mshtml.HTMLDocumentClass $oIE | Get-Member - говорит есть свойство Document $oIE.Document | Get-Member - говорит есть метод getElementsByClassName Подозреваю проблема в Microsoft.mshtml.dll. Подскажите что делать. Так не хочу запускать PS5 из PS7 p.s. в дебрях гугла нашел вот такое Код:
$oIE=new-object -com internetexplorer.application HTML код:
Displaying the “$procList” can also be accomplished with “write” methods instead of innerhtml assignment. But we should perform some extra checks to determine whether the document.body is type of [mshtml.htmldocumentclass]. If the “htmlfile” progid has the following settings in the registry: |
jack_nuclear, А зачем под PowerShell что-то там мудрить? Закачивайте страницу целиком и работайте с полученным...
Invoke-WebRequest и New-Object System.Net.Webclient в помощь. |
Foreigner, оба не подошли к сайту. Проверка браузера на нем. Подмена User-Agent не спасла
|
Время: 22:56. |
Время: 22:56.
© OSzone.net 2001-