如果我使用这个,一切都好,脚本得到了我想要看到的数据。
$Wcl = new-object System.Net.WebClient
$Wcl.Headers.Add(“xxxxx”, $xxxxx)
$Wcl.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
$html = Invoke-WebRequest -Uri https://www.mcafee.com/enterprise/en-us/downloads/security-updates.html
$dathtml = ($html.parsedhtml.getelementsbytagname("TR") |% { ( $_.children | ?{ $_.tagName -eq "td"} | % innerText ) } | Select-Object -First 1).Split('xdat')[0]
如果我使用它,脚本会返回数据,但是......
$Wcl = new-object System.Net.WebClient
$Wcl.Headers.Add(“xxxxx”, $xxxxxx)
$Wcl.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
$html = Invoke-WebRequest -Uri https://www.mcafee.com/enterprise/en-us/downloads/security-updates.html -UseBasicParsing
$dathtml = ($html.parsedhtml.getelementsbytagname("TR") |% { ( $_.children | ?{ $_.tagName -eq "td"} | % innerText ) } | Select-Object -First 1).Split('xdat')[0]
我收到此错误消息:
You cannot call a method on a null-valued expression.
At line:9 char:1
+ $dathtml = ($html.parsedhtml.getelementsbytagname("TR") |% { ( $_.children | ?{ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
仅添加了-UseBasicParsing。
Thanks!
如果你使用-UseBasicParsing
, then .parsedhtml
不可用
代替 :
$html = Invoke-WebRequest -Uri https://www.mcafee.com/enterprise/en-us/downloads/security-updates.html -UseBasicParsing
$dathtml = $html.parsedhtml.getelementsbytagname("TR") # produces error
Use:
$page = Invoke-WebRequest -Uri https://www.mcafee.com/enterprise/en-us/downloads/security-updates.html -UseBasicParsing
# Create HTML file Object
$HTML = New-Object -Com "HTMLFile"
# Write HTML content according to DOM Level2
$HTML.IHTMLDocument2_write($page.Content)
$dathtml = $HTML.getElementsByTagName("TR")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)