有一个报告网站,我想用 C# 解析其内容。我尝试使用 WebClient 下载 html,但我没有获得完整的源代码,因为其中大部分是在我访问网站时通过 js 生成的。
我尝试使用 WebBrowser,但无法让它在控制台应用程序中工作,即使在使用 Application.Run() 和 SetApartmentState(ApartmentState.STA) 之后也是如此。
还有其他方法可以访问这个生成的 html 吗?我还查看了 mshtml,但无法弄清楚。
谢谢
有一个报告网站,我想用 C# 解析其内容。我尝试使用 WebClient 下载 html,但我没有获得完整的源代码,因为其中大部分是在我访问网站时通过 js 生成的。
我尝试使用 WebBrowser,但无法让它在控制台应用程序中工作,即使在使用 Application.Run() 和 SetApartmentState(ApartmentState.STA) 之后也是如此。
还有其他方法可以访问这个生成的 html 吗?我还查看了 mshtml,但无法弄清楚。
谢谢
您可以使用无头浏览器 - XBrowser可以服务器。
如果没有,请按照此博客文章中的说明尝试 HtmlUnit 。
Javascript由浏览器执行。如果您的控制台应用程序获得了 JS,那么它按预期工作,您真正需要的是控制台应用程序执行下载的 JS 代码。
这里只是一个评论。使用一些 C# 代码执行 HTTP 请求与由浏览器生成的请求之间应该没有任何区别。如果目标网页变得混乱并且没有生成正确的标记,因为它无法从它认为它正在服务的浏览器类型中做出正面或反面,那么你所要做的就是像这样设置用户代理:
((HttpWebRequest)myWebClientRequest).UserAgent = "<a valid user agent>";
例如,我当前的用户代理是:
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
也许一旦你这样做,页面就会正常工作。这里可能还有其他因素在起作用,例如推荐人等,但我会先尝试一下,看看它是否有效。
您最好的选择是放弃控制台应用程序路线并构建 Windows 窗体应用程序。在这种情况下,WebBrowser 无需任何工作即可工作。