Как скачать все файлы с URL? - PullRequest
       14

Как скачать все файлы с URL?

1 голос
/ 23 октября 2019

Я довольно новичок в PowerShell и мне нужен скрипт для загрузки всех файлов с URL: https://opendata.dwd.de/climate_environment/CDC/observations_germany/climate/daily/kl/recent/

Мне уже удалось загрузить файлы, когда я храню URL-адреса отдельных файлов в списке. (см. код). Я пробовал разные вещи для автоматического создания списка, но я не сделал его.

$list = get-content "D:\ListURL.txt"

foreach($url in $list)
{
    $filename =[System.IO.Path]::GetFileName($url) 
    $file =[System.IO.Path]::Combine($outputdir, $filename) 
    Invoke-WebRequest -Uri $url -OutFile $file

}

Может кто-нибудь помочь мне с кодом для создания списка из URL? Большое спасибо заранее.

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Глядя на список файлов по этому URL, это работает для меня:

$outputdir = 'D:\Downloads'
$url       = 'https://opendata.dwd.de/climate_environment/CDC/observations_germany/climate/daily/kl/recent/'

# enable TLS 1.2 and TLS 1.1 protocols
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12, [Net.SecurityProtocolType]::Tls11

$WebResponse = Invoke-WebRequest -Uri $url
# get the list of links, skip the first one ("../") and download the files
$WebResponse.Links | Select-Object -ExpandProperty href -Skip 1 | ForEach-Object {
    Write-Host "Downloading file '$_'"
    $filePath = Join-Path -Path $outputdir -ChildPath $_
    $fileUrl  = '{0}/{1}' -f $url.TrimEnd('/'), $_
    Invoke-WebRequest -Uri $fileUrl -OutFile $filePath
}
0 голосов
/ 23 октября 2019

Это должно сработать:

Add-Type -AssemblyName System.Web
Add-Type -AssemblyName System.Web.Extensions

$url       = 'https://opendata.dwd.de/climate_environment/CDC/observations_germany/climate/daily/kl/recent/'
$destPath  = 'C:\temp\'

$response  = Invoke-WebRequest -Uri $url -Method GET

$files = @( $response.Content -split [environment]::NewLine | ? { $_ -like '*tageswerte*.zip*' } | % { $_ -replace '^(.*>)(tages.*\.zip)<.*', '$2' } )

foreach( $file in $files ) {

    Invoke-WebRequest -Uri ($url + $file) -Method GET -OutFile ($destPath + $file) | Out-Null
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...