【问题标题】:Download js generated html with C#用C#下载js生成的html
【发布时间】:2012-01-23 22:26:34
【问题描述】:

有一个报告网站,我想用 C# 解析其内容。我尝试使用 WebClient 下载 html,但我没有获得完整的源代码,因为其中大部分是在我访问网站时通过 js 生成的。

我尝试使用 WebBrowser,但无法让它在控制台应用程序中运行,即使在使用 Application.Run() 和 SetApartmentState(ApartmentState.STA) 之后也是如此。

还有其他方法可以访问这个生成的 html 吗?我还查看了 mshtml,但无法弄清楚。

谢谢

【问题讨论】:

    标签: c# html download dynamically-generated


    【解决方案1】:

    Javascript 由浏览器执行。如果您的控制台应用程序获得了 JS,那么它就可以按预期工作,而您真正需要的是让您的控制台应用程序执行下载的 JS 代码。

    【讨论】:

    • 我最终得到了这个,但实现它很麻烦。谢谢
    【解决方案2】:

    您可以使用无头浏览器 - XBrowser 可以服务器。

    如果没有,请按照this blog post 中的说明尝试 HtmlUnit。

    【讨论】:

    【解决方案3】:

    这里只是一个评论。使用一些 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
    

    也许一旦你这样做了,页面就会正常工作。这里可能还有其他因素在起作用,例如推荐人等,但我会先尝试一下,看看它是否有效。

    【讨论】:

    • 他没有得到预期结果的原因是网站上执行的 JavaScript。 HttpWebRequest 不会执行 JavaScript。他在使用 WebBrowser 时走在正确的轨道上。
    【解决方案4】:

    您最好的选择是放弃控制台应用程序路线并构建一个 Windows 窗体应用程序。在这种情况下,WebBrowser 无需任何工作即可工作。

    【讨论】:

      猜你喜欢
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      • 1970-01-01
      • 2015-09-24
      相关资源
      最近更新 更多