Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

YuS 2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
param (
    [string]$uri = 'https://docs.microsoft.com/en-us/sysinternals/downloads/',
    [string]$infile= 'html.html',
    [string]$outfile = 'out.txt',
    $Encode = 'utf8',
    $enc1 = 65001,
    $enc2 = 28591,
    $tag = 'p',
    [switch]$Local
)
 
#measure-command{
 
#---Эту секцию можно удалить после однократного запуска скрипта от имени админа ------------------
# Установка дополнительного модуля PowerHTML, для независимого парсинга HTML
# Может потребоваться ручное подтверждение установки.  
if (!(get-module -list powerhtml)) {
    write-verbose "Installing PowerHTML module for the current user..."
    install-module powerhtml #-scope currentuser
}
#-----------------------------------------------------------------------------------------
 
function convert ($from, $to){
    begin{
        $fenc = [text.encoding]::getencoding($from)
        $tenc = [text.encoding]::getencoding($to)
    }
    process{
        $a = $tenc.getbytes($_)
        $fenc.getstring($a)
    }
}
 
function get-urlelements ([object[]]$array){
    foreach ($item in $array){
        rv -n 'element','velem','name','attr','href','linktype',
        'link','arr','version','date' -force -ea 0
        $element = $item.element('a')
        $velem = $item.element('em')
        $name = $element.innertext.trim()
        $attr = $element.attributes
        $href = ($attr|? name -eq href).value
        $linktype = ($attr|? name -eq 'data-linktype').value
        $link = if ($linktype -eq "external"){$href} else {$uri + $href}
        if ($velem){
            $arr = $velem.innertext -split ' \('
            $version = $arr[0]
            $date = $arr[1].trim(')')
        }
        $descr = $item.getdirectinnertext().trim()
        [PSCustomObject]@{
            Page = $link
            Name = $name
            Version = $version
            Date = $date
            Description = $descr
        }
    }
}
 
if ($pscore = $psversiontable.psversion.major -gt 5){
    #import-module bitstransfer
    #if ($encode -eq 'utf8'){$encode = 'utf-8'}
    [net.servicepointmanager]::securityprotocol = 0
} else {
    [net.servicepointmanager]::securityprotocol = 'ssl3,tls,tls11,tls12'
}
 
if ($local) {$a = gc $infile -raw -enc $encode} else {$a = (iwr $uri).content}
 
$content = if ($a -match [char]208){
    if ($a -match 'windows-1251'){$enc1,$enc2 = 1251,1252}
    $a|convert $enc1 $enc2
} else {$a}
 
$html = [net.webutility]::htmldecode($content)|convertfrom-html
[array]$links = $html.selectnodes("//$tag[a[@href]]")
 
get-urlelements $links #|ogv

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 20:16 25-04-2021 | Исправлено: YuS 2, 20:52 25-04-2021
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru