【问题标题】:How do I get the full source code of a webpage in C#?如何在 C# 中获取网页的完整源代码?
【发布时间】:2016-10-07 03:38:55
【问题描述】:

我正在做一个小项目,它涉及从网站获取数据以进行计算。

我试过了

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    StreamReader sr = new StreamReader(response.GetResponseStream());
    rtb_data.Text = sr.ReadToEnd();
    sr.Close();

但是这样,我无法获得完整的源代码,就像我在 chrome 上打开开发者工具包时所做的那样 (F12)。

例子:

    <div id="live-match" class="panel-container" data-match-status-code="6" data-mode="3">

我明白了:

    <div id="live-match" class="panel-container">

在那个 div 中有许多重要信息,但我根本没有得到课程。

我不是 C# 或动态网页的专业人士,但由于我能够使用开发工具包查看真正的源代码,因此应该也可以在 C# 中获取它,对吧?

我的最后一个解决方案是使用复制/粘贴源代码并从那里开始工作,但这会非常慢,因为我想自动计算东西。

你们知道如何获得完整的源代码吗?我是否必须临时下载内容?如果是,怎么做?

【问题讨论】:

  • 据推测,开发人员工具正在向您展示从 javascript 生成的内容——因此,如果不运行您自己的解释器,您将无法获得它。如果只是供个人使用,chrome插件可能是要走的路吗?
  • 呈现页面的方式有很多种(执行javascript)。此处描述了其中一种方式:stackoverflow.com/q/24288726/5311735
  • 那个链接看起来很有希望,谢谢你的链接。 :)
  • 请务必查看已接受答案底部的“更简单的方法”。

标签: c# html web-scraping webpage


【解决方案1】:

您遇到的问题是您不想要网页的 source(这是您在执行简单的 Web 请求时得到的)您似乎实际上是在 DOM 之后在运行时生成。

很遗憾,除非你愿意编写自己的浏览器...

【讨论】:

  • 因此,webbrowser 控件将主要允许您至少在 winforms 中获取活动网页(包括 dom 操作),前提是它与 IE 渲染器兼容。此外,Evk 提供的链接对于此类目的似乎非常方便,做到这一点并不难......
猜你喜欢
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多