在Powershell中的HTML文件中查找<img>标签

旗帜

我想在Powershell中创建一个简单的代码,该代码仅检查HTMl文件的文件夹中未使用哪些图像。因此,我想在本地打开每个HTML文件(而不是通过URI)并检索所有标签。听起来并不可怕。

我已经完成了研究,并且进展顺利,我想到了以下代码:

Foreach ($imageFile in $imageFiles){
    Foreach ($file in $HTMLFiles)
    {
        Write-Debug "Processing: $file"                    
        $html = New-Object -ComObject "HTMLFile"
        $source = Get-Content -Path $file.FullName -Raw
        $html.IHTMLDocument2_write($source);       
        $nbImages = $html.Images.length        

        ForEach ($i in $html.Images){
            #$i.getTags("src")
        }          
    } 
}

问题1:我正在处理HTML文件,然后将它们(重新)转换为HTML文件以访问有用的方法。有没有简单的方法?

问题2和问题:我只是找不到浏览图像标签集合的方法。我怎么做?我检查了我的代码在源中如何找到图像,这是正确的。我只想从集合本身中获取信息。

谢谢您的帮助,我真的被困在这里!

旗帜

PowerShell使您认为它具有等效的循环,但没有。foreach与|%{...}的作用不同。

在我的示例中,我必须用检索$ HTMLFiles并将其重定向到%{}的方式替换第二个foreach。这样,PS就会“知道” $ htmlFiles变量中的内容。

结论:比起foreach循环,更喜欢管道。管道使PS可以通过管道跟踪表达式的结果。Foreach循环似乎阻止它执行此操作。

结论2和更高的精度:最后,我找到了一种使用foreach做到这一点的方法。代替:

ForEach ($i in $html.Images){
  ...
}  

做:

$images= @($html.Images)
$images | ForEach {...}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章