2012-10-23 168 views
2

我想从一个特定的网页得到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(); 

,或者使用Web客户端,我重定向到登录页面,我得到它的代码。 是否有任何其他方式获取HTML代码?

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

产品号: 我在浏览器中登录。 Notepad ++通过“右键单击 - 查看源代码”完美获取我需要的内容。

谢谢。

+1

听起来像页面期望您在登录会话中访问该页面。您必须首先模仿登录才能获得会话(最有可能的Cookie - 使用CookieContainer),然后访问该页面。 – Quintium

回答

2

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

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

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

1

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

另外,如果你有一个可以帮助程序的用户,你可以尝试列出他们通过他们的浏览器登录后的网站的cookies。将该cookie复制并添加到CookieCollection中。

干杯 西蒙

0

如果你想放弃,需要autentication一个HTML页面,我建议你使用Watin 填写适当的领域,然后导航至您想要下载的网页。 也许iot看起来有点过分,但它会在以后节省很多麻烦。