怎么下载网页代码,Discuz论坛,带密码,不用WebBrowser?

whoyousee 2012-01-26 04:44:33
想在一个论坛网页里面提取一些内容:
开始是先手动用IE去论坛登陆,用WebBrowser加载网页,但里面的图片很多,
每次都要等控件Navigate完毕后,才解析WebBrowser的HTMLDocumentClass,
这样实在是太慢了。


换了一种方法是,还是不行,有没有什么方法不用WebBrowser,获取网页代码,又可以登陆网站
(即使程序运行前手动登陆网站,也可以)
Web方面的知识不会,哪位高手帮我一下,下面是我在网上搜了一些代码拼凑出来的。


//我的想法是:程序运行前先调用:Login登陆网站,再用GetHtmlCode提取网页里面的内容。
//可是登陆网站时,根本都无法登陆。
class MyHttp
{
internal static HTMLDocumentClass GetHtmlCode(Uri uri)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader s = new StreamReader(response.GetResponseStream(), Encoding.Default);

HTMLDocumentClass doc = new HTMLDocumentClass();
IHTMLDocument2 doc2 = (IHTMLDocument2)doc;
doc.close();

//网页的代码
string str = Encoding.Unicode.GetString(
Encoding.Convert(Encoding.Default
, Encoding.Unicode, Encoding.Default.GetBytes(s.ReadToEnd()))
);

doc2.write(str);
return doc;
}

internal static void Login(Uri uri)
{
//如果改一下方法,doc 换成WebBrowser的HTMLDocumentClass,是可以登陆网站的。
HTMLDocumentClass doc = GetHtmlCode(uri);

//填写用户名
HTMLInputElementClass username = doc.all.item("username", 0) as dynamic;
username.value = Properties.Resources.username;

//填写密码
HTMLInputElementClass password = doc.all.item("password", 0) as dynamic;
password.value = Properties.Resources.password;

HTMLInputElementClass loginsubmit = doc.all.item("loginsubmit", 0) as dynamic;、

//程序运行到这句时出现,IE弹出一个网页about:logging.php?action=login,根本都
//不是登陆的那个网站

loginsubmit.click();
}
}
...全文
131 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lesice 2012-01-27
  • 打赏
  • 举报
回复
在定义request后加上以下代码。


CookieContainer cookie=new CookieContainer();
request.CookieContainer=cookie;


以后发送请求把CookieContainer属性都设为cookie即可。
whoyousee 2012-01-26
  • 打赏
  • 举报
回复
怎么带cookies?有没代码
[Quote=引用 2 楼 zylsky 的回复:]

采集时带上cookies就行了.
[/Quote]
zylsky 2012-01-26
  • 打赏
  • 举报
回复
采集时带上cookies就行了.
空心兜兜 2012-01-26
  • 打赏
  • 举报
回复
不懂标题和描述= =

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧