小弟刚刚开始工作,C#学了不到一星期,就要做一个抓取网页的程序。
大家知道,如果给定一个url,得到其网页源码是很简单的,我现在遇到的问题是,要利用网站自带的搜索引擎,而不是给定的url,因为我要得到他们数据库里的一些有效信息,那对我们才是有价值的。比喻说,用51job自带的引擎,输入查询字段,可以得到很多工作信息,我们要的就是这样的东西。但是我不可能打开ie搜了以后在提取呀。
据我的研究,得向网页Post一个信息才行,我试了一下,可是没成功,呵呵,我刚刚学这些东西,对我来说太难了一点,各位达人高手,帮忙呀,小弟先谢了。知道得大哥最好把代码贴出来,便于小弟学习。

解决方案 »

  1.   

    use HttpWebRequest , see a classic article on how to do thathttp://www.west-wind.com/presentations/dotnetWebRequest/dotnetWebRequest.htm
      

  2.   

    //建立httpwebrequest和httpwebrequest对象
    System.Net.HttpWebRequest req;
    System.Net.HttpWebResponse res;
    //url,需要请求的URL
    string url=struri.ToString();
    //提交请求
    WebRequest webreq=WebRequest.Create(url);
    //转换类型
    req=(HttpWebRequest)webreq;
    //返回对请求的响应
    WebResponse webres=req.GetResponse();
    //转换类型
    res=(HttpWebResponse)webres;
    //得到返回数据流
    Stream mystream=res.GetResponseStream();
    StreamReader mystreameread=new StreamReader(mystream,Encoding.Default);
    //转换流为字符串
    string strtemp=mystreameread.ReadToEnd();不知道楼主要的是不是这个东西?
      

  3.   

    using System;
    using System.Web;
    using System.Net;
    using System.IO;
    using System.Text;
    namespace SendMessage
    {public bool SendMsg(MsgInfo msg)
    {
    //create request
    try
    {
    WebRequest req = WebRequest.Create("http://your_post_url");//set the request parameter 
    req.Method = "POST";
    req.ContentType = "application/x-www-form-urlencoded";//querystring '?msg=xxx&type=0'
    string strQuery = "msg=";
    strQuery += HttpUtility.UrlEncode(msg);
    strQuery += "&type=0";string dataSend = strQuery;
    req.ContentLength = dataSend.Length;byte [] buff = Encoding.UTF8.GetBytes(dataSend); 
    Stream reqStream = req.GetRequestStream();
    reqStream.Write(buff, 0, buff.Length);
    reqStream.Close();WebResponse rep = req.GetResponse();
    Stream repStream = rep.GetResponseStream();
    Encoding enc = Encoding.GetEncoding("utf-8");
    StreamReader sr = new StreamReader(repStream, enc);Char[] read = new Char[256];
    sr.Read(read, 0, 256);return true;
    }
    catch(NotSupportedException ns)
    {
    return false; 
    }
    }}在网上又找到一篇,可以向另一服务器POST数据的,但我没试,希望对楼主有帮助
      

  4.   

    你可以尝试使用web Service..我觉得对于这个问题是最好的解决办法.