我有以下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
答案 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