如何从网页上获取HTML代码?

时间:2012-10-23 13:33:10

标签: c# html

我正在尝试从特定网页获取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,但不明白我该怎么做,或者指明网址的方式和位置。

P.S .: 我在浏览器中登录。 Notepad ++通过“右键单击 - 查看源代码”完美地获得了我需要的东西。

感谢。

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

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

干杯 西蒙

答案 2 :(得分:0)

如果您要废弃需要身份验证的html页面,建议您使用Watin 填写正确的字段并导航到要下载的页面。 也许iot乍一看似乎有点过分,但以后会省去很多麻烦。