2

我正在尝试从特定网页获取 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。

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

谢谢。

4

3 回答 3

2

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

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

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

于 2012-10-23T13:36:03.497 回答
1

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

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

干杯西蒙

于 2012-10-23T13:38:43.827 回答
0

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

于 2012-10-23T13:43:36.733 回答