0

RSS の結果を取得するための次の powershell スクリプトがあります。ただし、スクリプトは生の RSS ソースではなく、フォーマットされた RSS コンテンツの HTML コードを返します。これは、IE 画面を右クリックして [ソースを表示] をクリックすると表示できます。

質問:

生の RSS(XML) ソースを取得するには?

$url = "http://www.osnews.com/files/recent.xml"
$ie = New-Object -com "InternetExplorer.Application"
$ie.Navigate($url)

while ($ie.busy) { start-sleep -milliseconds 1000; }

$ie.Document.documentElement.OuterHTML 

更新:
最初に自分のサイトにログインする必要があるため、webclient は使用しませんでした (ここでは例として osnews.com を使用しています)。PowerShell (Cookie、資格情報など) を使用して webclient を使用してサイトにログインするのは簡単ではないようです。

私の元の例:

$ie$url = New-Object -com "InternetExplorer.Application"
$ie.Navigate("http://mysite.com/login")
$ie.visible = $true

while ($ie.busy) { start-sleep -milliseconds 1000; }

$ie.Document.getElementById("username").value = "myusername";
$ie.Document.getElementById("password").value = "mypassword";
$ie.Document.getElementById("login").click();

while ($ie.busy) { start-sleep -milliseconds 1000; }

$url = "http://mysite.com/rss/..."
$ie.Navigate($url)}

[xml]$rss = $ie.Document.documentElement.OuterHTML
4

3 に答える 3

0

Internet Explorer を使用しないでください。たとえば、次のコード (PowerShell V2) で実行できます。

$w = New-Object Net.WebClient
$xml = [xml]$w.DownloadString('http://www.osnews.com/files/recent.xml')

更新

RSS ソースの取得は、InternetExplorer によって自動的にフォーマットされるため、さらに複雑です。また、ツール - >コンテンツ - >設定(情報サービス用) - >「情報チャネルをオンにする...」などのチェックを外すと(推測では、チェコ語にローカライズされたウィンドウがあります)、IEでrss自体が表示されます(そうではありませんフィードとしてフォーマットされていますが、XML としてフォーマットされています)。ただし、 $ie.document.body.innerhtml はまだ html です:(

于 2012-06-12T18:59:30.030 に答える
0

代わりに WebClient を使用してみてください。

$url = "http://www.osnews.com/files/recent.xml"
$client = new-object System.Net.WebClient
$htmlsource = $client.DownloadString($url)
$xml = [xml]($htmlsource)

ここまできたら、あとは何でもできます。たとえば、次のようにすべてを印刷できます。

$xml.rss.channel.item

または、次のように、最初の 10 タイトルのみ:

$xml.rss.channel.item | select title -f 10
于 2012-06-12T18:59:37.940 に答える
0

次のようなことを試してください:

$feed=[xml](new-object system.net.webclient).downloadstring("http://www.osnews.com/files/recent.xml")  
$results= $feed.rss.channel.item | Select-Object TITLE,DESCRIPTION | ConvertTo-Html | out-file c:\rss.htm

Invoke-Expression C:\rss.htm
于 2012-06-12T19:09:35.397 に答える