我正在尝试从特定网页获取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 ++通过“右键单击 - 查看源代码”完美地获得了我需要的东西。
感谢。
答案 0 :(得分:2)
如果您被重定向到登录页面,那么您可能必须先登录才能获得内容。
因此,您需要使用合适的凭据向登录页面发出请求。获取发送的任何令牌(通常以cookie的形式)以维护登录。然后请求您想要的页面(发送带有请求的cookie)。
或者(这是首选方法),期望自动化系统与它们交互的大多数主要站点都提供API(通常使用OAuth进行身份验证)。请查阅他们的文档,了解他们的API如何运作。
答案 1 :(得分:1)
如果您要访问的页面位于登录屏幕后面 - 您将需要通过代码执行登录机制。并添加一个关联的CookieCollection来保存网站将尝试删除您的请求的登录cookie。
或者,如果您有可以帮助该计划的用户,您可以尝试在他们通过浏览器登录后列出该网站的Cookie。将该cookie复制并添加到CookieCollection。
干杯 西蒙
答案 2 :(得分:0)
如果您要废弃需要身份验证的html页面,建议您使用Watin 填写正确的字段并导航到要下载的页面。 也许iot乍一看似乎有点过分,但以后会省去很多麻烦。