我正在尝试获取生成的网页内容,以便我可以提取显示文本。我尝试了下面的代码,但它获取源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进行比较,您将得到不同的结果。
任何建议都将受到赞赏。
答案 0 :(得分:0)
我假设你的意思是你想要文章文本。如果是这样,您将需要遵循不同的行动方案。您引用的页面加载了客户端脚本,该脚本将大量内容注入基本HTML文档。这是通过执行客户端脚本完成的。执行脚本后,您需要解析DOM以获取您感兴趣的内容。
答案 1 :(得分:0)
正如其他人所指出的,实际的网络浏览器将解析下载的HTML并对其执行javascript,可能会改变其内容。虽然您可以尝试自己解析,但最简单的方法是让真实的Web浏览器为您执行此操作,然后获取结果。
C#中最简单的解决方案是使用Windows Forms中的WebBrowser Control,它基本上将IE暴露给您的程序,允许您控制它。使用Navigate
方法加载有问题的URL,然后使用Document
属性导航DOM。此时,您可以获取outerHTML
以获取DOM的最终内容为HTML。
如果您没有编写Windows程序并且对无头操作感兴趣,请查看PhantomJS。它是一个无头的Webkit浏览器,可以通过javascript编写脚本,并且可以提供类似的功能,但不是在C#中。