获取C#中网页的输出



我正在尝试获取生成的网页内容,以便提取显示文本。我尝试了下面的代码,但它给了我源html,而不是结果html。

string urlPath = "http://www.cbsnews.com/news/jamar-clark-protests-follow-decision-not-to-file-charges-in-minneapolis-police-shooting/";
WebClient client = new WebClient();
string str = client.DownloadString(urlPath);

将str变量中的文本与Chrome浏览器中开发工具中的html进行比较,会得到不同的结果。

如有任何建议,我们将不胜感激。

我假设你的意思是想要文章文本。如果是这样的话,你需要采取不同的行动。您引用的页面加载了客户端脚本,该脚本将大量内容注入到基本HTML文档中。这是通过执行客户端脚本来完成的。脚本执行后,您需要解析DOM以获得您感兴趣的内容。

正如其他人所指出的,实际的web浏览器将解析下载的HTML并对其执行javascript,从而可能更改其内容。虽然你可以尝试自己进行解析,但最简单的方法是让真正的网络浏览器为你进行解析,然后获取结果。

C#中最简单的解决方案是使用Windows窗体中的WebBrowser控件,它本质上向程序公开IE,允许您控制它。使用Navigate方法加载有问题的URL,然后使用Document属性导航DOM。在这一点上,您可以获得outerHTML,以HTML形式获得DOM的最终内容。

如果您不是在编写Windows程序,并且对无头操作更感兴趣,请查看PhantomJS。这是一个无头Webkit浏览器,可以从javascript编写脚本,并将为您提供类似的功能,尽管不是在C#中。

最新更新