0

我正在尝试获取生成的网页内容,以便提取显示文本。我尝试了下面的代码,但它让我得到了源 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 进行比较,您会得到不同的结果。

任何建议将不胜感激。

4

2 回答 2

0

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

于 2016-03-31T02:08:46.110 回答
0

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

专门在 C# 中最简单的解决方案是使用 Windows 窗体中的WebBrowser 控件,它本质上将 IE 暴露给您的程序,允许您控制它。使用该Navigate方法加载有问题的 URL,然后使用该Document属性导航 DOM。此时,您可以outerHTML获取 DOM 的最终内容作为 HTML。

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

于 2016-03-31T05:02:43.880 回答