0

我有以下 powershell 脚本来获取 RSS 结果。但是,该脚本返回的是格式化的 RSS 内容的 HTML 代码,而不是原始的 RSS 源,可以通过右键单击 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 作为示例)。使用 webclient 使用 powershell(cookie、凭据等)登录我的网站似乎并不容易。

我原来的例子:

$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 回答