c# – 从Facebook页面中提取RSS源

我需要帮助从Facebook页面提取RSS提要我正在使用以下代码,但它一直给我一个错误
string url = 
    "https://www.facebook.com/Feeds/page.PHP?id=40796308305&format=RSS20";

XmlReaderSettings settings = 
    new XmlReaderSettings
                    {
                         XmlResolver = null,DtdProcessing=DtdProcessing.Parse,}; 
XmlReader reader = XmlReader.Create(url,settings);

SyndicationFeed Feed = SyndicationFeed.Load(reader);

foreach (var item in Feed.Items)
{
    Console.WriteLine(item.Id);
    Console.WriteLine(item.Title.Text);
    Console.WriteLine(item.Summary.Text);

}

if (reader != null) reader.Close();

代码与任何博客页面RSS完美配合,但使用Facebook RSS时,它会给出以下消息的异常

The element with name ‘html’ and namespace ‘http://www.w3.org/1999/xhtml’ is not an allowed Feed format.

谢谢

解决方法

Facebook将在此实例中返回HTML,因为它不喜欢XmlReader提供的用户代理.由于您无法自定义它,因此您需要一个不同的解决方案来获取Feed.这应该可以解决您的问题:
var req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";
req.UserAgent = "fiddler";

var rep = req.GetResponse();
var reader = XmlReader.Create(rep.GetResponseStream());

SyndicationFeed Feed = SyndicationFeed.Load(reader);

这完全是Facebook的一种行为,但建议的更改应该同样适用于您当前实施可以接受的其他网站.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...