我尝试创建FTP站点中所有链接的列表。链接是下载zip文件。
我的最终目标是将每个链接分析为字符串,并将开头与设置短语相匹配。每个链接的结尾都包含一个日期,我必须找到要下载的最新版本。
在此示例中,我想从此列表中找到ABC_20170323.zip
:
我需要弄清楚如何在分析之前获取链接。我尝试了各种方法,唯一从网站上返回任何信息的方法是收集源代码:
Invoke-WebRequest $sourceuri -UseBasicParsing -Credential $user
但后来我发现从那里收集所有链接很困难。任何人都有方法轻松获取这些文件下载链接?
答案 0 :(得分:0)
好的,所以我知道它已经很久了,但我想出了怎么做。不可否认,这是艰难的方式。最终发生的事情是我收集了源代码并保存它:
$r = Invoke-WebRequest $sourceuri -UseBasicParsing -credential $user
然后我将它转换为字符串并使用-split
通过他们的html标签和我期望的开头看起来像(在这种情况下为'ABC')来分离链接:
$c = $r.ToString() #convert to string
$datelist = @()
$f = ($c -split 'A HREF="' -split '.zip</A>') #split by html tag (and .zip)
foreach($link in $f){
if($link -match 'ABC') { #if the beginning of the link is 'ABC'
$datelist += ($link.substring($link.Length-8)) #isolate the date on the end
}
} #more logic for comparing $datelist items...
然后我写了一些逻辑来比较$datelist
中的项目(从答案中省略)并创建了一个包含我需要的所有组件的变量:
$ExactLink = "ABC_$GreatestDate" + ".zip"
然后继续下载我需要的$ExactLink
。