首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用包含在文本文件中的链接进行web抓取?

如何使用包含在文本文件中的链接进行web抓取?
EN

Stack Overflow用户
提问于 2022-06-22 17:32:08
回答 1查看 74关注 0票数 0

我目前正在尝试创建一个powershell脚本,从一个网站中提取CVE编号。网站链接是在文本文件中指定的,如下所示:

代码语言:javascript
复制
Application   : Microsoft.Office.Interop.Excel.ApplicationClass
Creator       : 1480803660     Parent        : System.__ComObject
Name          : https://www.cisa.gov/uscert/ics/advisories/icsa-22-006-01
Range         : System.__ComObject
Shape         : 
SubAddress    : 
Address       : https://www.cisa.gov/uscert/ics/advisories/icsa-22-006-01

我目前拥有的代码遇到了一个关于“空值表达式”的错误,我似乎无法让代码工作。我怀疑这可能与我试图读取文本文件的方式有问题。

代码语言:javascript
复制
$Path = "C:\Users\Windows\Downloads\Links.txt"
$values = Get-Content $Path | Where-Object {$_ -like '*Name*'}
$URI = $values

ForEach ($URI in $Path){
$HTML = Invoke-WebRequest -Uri $URI -UseBasicParsing
($HTML.ParsedHtml.getElementsByTagName("a") | Where{ $_.href -eq 'http://web.nvd.nist.gov/view/vuln/detail?vulnId' } ).innerText | Out-File -FilePath 'C:\Users\Windows\Downloads\CVEList'
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-22 18:06:32

为了补充来自@Sage的评论,可以为使用Microsoft中的PowerShell更新版本提供一个可能的解决办法:

代码语言:javascript
复制
function ParseHtml($String) {
    $Unicode = [System.Text.Encoding]::Unicode.GetBytes($String)
    $Html = New-Object -Com 'HTMLFile'
    if ($Html.PSObject.Methods.Name -Contains 'IHTMLDocument2_Write') {
        $Html.IHTMLDocument2_Write($Unicode)
    } 
    else {
        $Html.write($Unicode)
    }
    $Html.Close()
    $Html
}

$Uri = 'https://stackoverflow.com/a/72720158/1701026'
$Html = ParseHtml (Invoke-WebRequest -Uri $URI).Content
$Html.body.getElementsByTagName('a') |ForEach-Object { $_.href }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72719751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档