如何使用IE自动化获取RSS源?

时间:2012-06-12 18:20:06

标签: internet-explorer powershell rss

我有以下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为例)。使用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

3 个答案:

答案 0 :(得分:0)

不要使用Internet Explorer。你可以这样做,例如通过此代码(PowerShell V2):

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

<强>更新

获取rss源代码要复杂得多,因为InternetExplorer会自动对其进行格式化。此外,如果我取消选中 tools-&gt; Content-&gt;设置(用于信息服务) - &gt;类似“打开信息频道......”(只是猜测,我将Windows本地化为捷克语) ,然后它在IE中显示rss本身(未格式化为feed,但格式化为XML)。但是,$ ie.document.body.innerhtml仍然是html :(

答案 1 :(得分: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

答案 2 :(得分: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