• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
一个具有上进心的码农
因为一篇文章中有很多是从很多篇文章中摘取的,请恕我没有一一说明摘取出处,如果没有说明,则该文章默认是摘取,如有侵犯您的权益,请与我联系,将会马上删除。
博客园    首页    新随笔    联系   管理    订阅  订阅

爬虫(转载的)

Code
你需要先得到网页编码。下面这段代码可以解决大部分的网页 
  
private void button3_Click(object sender, EventArgs e)
    {
      String[] UrlList 
= {
                         
"http://www.kbs.co.kr/",
                         
"http://rosemary.kbs.co.kr/",
                         
"http://sbcx.saic.gov.cn/trade/index.jsp",
                         
"http://www.csdn.net",
                         
"http://www.google.cn/",
                         
"http://www.baidu.com",
                         
"http://www.javaeye.com/",
                         
"http://blog.163.com/kel_scott66/blog/static/1150539632009614115635700/",
                         
"http://www.sina.com.hk/",
                         
"http://www.rthk.org.hk/"
                        };
      
foreach (String u in UrlList)
      {
        textBox1.Text 
= GetWebPage(u, "GET");
        MessageBox.Show(u);
      }
    }

    
public string GetWebPage(string uri, string method)
    {
      
try
      {
        HttpWebRequest req 
= (HttpWebRequest)WebRequest.Create(uri);
        req.Method 
= method;
        req.Timeout 
= 10000;
        req.UserAgent 
= "Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 (.NET CLR 3.5.30729)";
        String ReturnedEncoding 
= "";
        HttpWebResponse res 
= req.GetResponse() as HttpWebResponse;
        Stream ReceiveStream 
= res.GetResponseStream();
        StreamReader sr 
= new StreamReader(ReceiveStream, Encoding.UTF8);
        
string ReturnedContent = sr.ReadToEnd();

        
if (ReturnedEncoding == "")
        {
          
//string h = "<meta http-equiv='Content-Type' content='text/html; charset=big5'>";
          Regex reg_charset = new Regex(@"charset\b\s*=\s*(?<charset>[^""|^'']*)");
          
if (reg_charset.IsMatch(ReturnedContent))
          {
            ReturnedEncoding 
= reg_charset.Match(ReturnedContent).Groups["charset"].Value;
          }
        }

        
if (ReturnedEncoding == "")
        {
          String ct 
= res.ContentType.ToLower().Replace(" ", "");
          
if (ct.IndexOf("charset") > -1)
          {
            ReturnedEncoding 
= ct.Substring(ct.IndexOf("charset=") + 8);
          }
        }

        
if (ReturnedEncoding == "")
        {
          ReturnedEncoding 
= res.ContentEncoding;
        }


        
if (ReturnedEncoding == "")
        {
          ReturnedEncoding 
= res.CharacterSet;
        }

        Encoding HtmlEncoding 
= Encoding.Default;
        
if (ReturnedEncoding != "")
        {
          HtmlEncoding 
= Encoding.GetEncoding(ReturnedEncoding);
        }

        req 
= (HttpWebRequest)WebRequest.Create(uri);
        req.Method 
= method;
        req.Timeout 
= 10000;
        req.UserAgent 
= "Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 (.NET CLR 3.5.30729)";
        res 
= req.GetResponse() as HttpWebResponse;
        ReceiveStream 
= res.GetResponseStream();
        sr 
= new StreamReader(ReceiveStream, HtmlEncoding);
        ReturnedContent 
= sr.ReadToEnd();
        
return ReturnedContent;
      }
      
catch
      {
        
return "获取失败!";
      }
    }
posted @ 2009-11-09 17:11  不若相忘于江湖  阅读(189)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3