【问题标题】:How to get HTML code from webpage?如何从网页中获取 HTML 代码?
【发布时间】:2012-10-13 10:55:21
【问题描述】:

我正在尝试从特定网页获取 HTML 代码,但是当我这样做时使用

        HttpWebRequest request;
        HttpWebResponse response;
        StreamReader streamReader;
        request = (HttpWebRequest)WebRequest.Create(pageURL);
        response = (HttpWebResponse)request.GetResponse();
        streamReader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("windows-1251"));
        htmlCode = streamReader.ReadToEnd();
        streamReader.Close();

或使用 WebClient,我被重定向到登录页面并获得其代码。 有没有其他方法可以获取 HTML 代码?

我在这里阅读了一些信息:How to get HTML from a current request, in a postback,但不明白我应该做什么,或者如何以及在哪里指定 URL。

附: 我在浏览器中登录。 Notepad++ 通过“右键-查看源代码”完美得到了我需要的东西。

谢谢。

【问题讨论】:

  • 听起来该页面希望您在登录会话中访问该页面。您必须首先模拟登录以获取会话(最有可能使用 Cookie - 为此使用 CookieContainer),然后访问该页面。

标签: c# html


【解决方案1】:

如果你想废弃一个需要认证的html页面,我建议你使用Watin 填写正确的字段并导航到您要下载的页面。 可能iot乍一看似乎有点矫枉过正,但以后会省去很多麻烦。

【讨论】:

    【解决方案2】:

    如果您要访问的页面位于登录屏幕后面 - 您将需要通过代码执行登录机制。并添加一个关联的 CookieCollection 来保存网站将尝试在您的请求中删除的登录 cookie。

    或者,如果您有可以帮助该程序的用户,您可以在他们通过浏览器登录后尝试列出该网站的 Cookie。复制该 cookie 并将其添加到 CookieCollection。

    干杯 西蒙

    【讨论】:

      【解决方案3】:

      如果您被重定向到登录页面,那么大概您必须先登录才能获取内容。

      因此,您需要使用合适的凭据向登录页面发出请求。获取发送的任何令牌(通常以 cookie 的形式)以维护登录。然后请求您想要的页面(随请求发送 cookie)。

      或者(这是首选方法),大多数希望自动化系统与其交互的主要网站都提供 API(通常使用 OAuth 进行身份验证)。请查阅他们的文档以了解他们的 API 是如何工作的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多