実現したいこと
なるべく高速なwebアクセスを行い、ページ情報を取得したいと考えております。
ネットで調べたところ、powershellで以下のような情報が見つかり、同様の手法で情報を取得したいと考えております。
リンク内容
問題点
「SgmlReaderDll.dll」をPS1と同一フォルダに配置し実行して見たのですがエラーが発生してしまいました。どのように対処したら良いかわからず、ご教示のほど宜しくお願い致します。
Add-Type -Path .\SgmlReaderDll.dll function Get-HTMLDocument { param([uri]$Uri) $sgmlReader = New-Object Sgml.SgmlReader -Property @{ Href = $Uri.AbsoluteUri CaseFolding = [Sgml.CaseFolding]::ToLower } $doc = New-Object System.Xml.XmlDocument $doc.Load($sgmlReader) $doc } $xml = Get-HTMLDocument http://winscript.jp/ $xml.html.body.div|? id -eq outer|% div|? id -eq main|% {$_.p.innerText}
<エラーメッセージ>
"1" 個の引数を指定して "Load" を呼び出し中に例外が発生しました: "操作はタイムアウトになりました。"
発生場所 D:gethtml_test2.ps1:11 文字:5
-
$doc.Load($sgmlReader)
-
~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : NotSpecified: (:) [], MethodInvocationException
- FullyQualifiedErrorId : DotNetMethodException
確認したこと
Add-Typeで上手くdllが読めてないのかと思い、別の手法も試してみました。
[Reflection.Assembly]::LoadFile("D:SgmlReaderDll.dll") 【function以降は同様】
この結果は以下となりました。GACの箇所が"False"になっているのが気になりますが、如何せん良くわからず質問に至りました。
<結果>
GAC Version Location
False v4.0.30319 D:\SgmlReaderDll.dll
"1" 個の引数を指定して "Load" を呼び出し中に例外が発生しました: "操作はタイムアウトになりました。"
発生場所 D:gethtml_test2.ps1:11 文字:5
-
$doc.Load($sgmlReader)
-
~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : NotSpecified: (:) [], MethodInvocationException
- FullyQualifiedErrorId : DotNetMethodException
環境
OS:Windows10
PS C:\WINDOWS\system32> $PSVersionTable
Name Value
PSVersion 5.1.17134.407
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17134.407
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
あなたの回答
tips
プレビュー