美文网首页
算不上虫

算不上虫

作者: ouyounger | 来源:发表于2018-08-21 08:55 被阅读0次

    爬虫这个东西,以前只是听说过,并不曾认真了解过,本来只是想能做单机的程序就好了,所以对网络这方面一直躲躲闪闪,尤其是多线程异步这一块始终在隐隐作痛,思维还停留在面向过程编程,哎~
    好吧,昨天写的这个根本就算不上个虫吧,最多就是行模拟网络请求的C井代码?
    当然,代码是copy来的,但是出处忘记了。。。

      static void main(string[] args){
        string url = "http://blog.sina.com.cn/s/articlelist_1240149507_0_2.html";
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); // 这里Create() 返回的是WebRequest
    
        using(HttpResponse response = (HttpWebResponse)request.GetResponse()){
          if(response.StatusCode == HttpStateCode.OK){  // 状态码 200
            using(Stream stream = response.GetResponseStream()){
              using(StreamReader reader = new StreamReader(stream)){
    
                string html = reader.ReadToEnd();
                string regstr = @"(?is)<a(?:(?!href=).)*href=(['""]?)(?<url>[^""\s>]*)\1[^>]*>恩恩怨怨(?<text>(?:(?!</?a\b).)*)</a>";   //提取链接的内容
    
                Regex reg = new Regex(regstr, RegexOptions.IgnoreCase | RegexOptions.Singleline);
                MatchCollection mc = reg.Matches(html);
    
                foreach (Match m in mc){
                  Console.WriteLine(m.Groups["url"].ToString() + ":" + m.Groups["text"].ToString());
                  Console.WriteLine("------------------------------");
                }
    
              }
            }
          }
          else{
            Console.WriteLine("服务器返回错误:{0}", response.StatusCode);
          }
        } 
      }
    

    其实也就是回去html 字符串,然后根据自己需要的规则进行匹配,就是这个样子吧,当然后面可以进行更深层次的搜索,不过有几点还是蛮有意思的:

    1 C# HttpWebRequest 类,随然在C# 中类的属性定义形式可以不同于Java,但是F12 或者ReSharper 下Ctrl + B 看类属性的定义,还是和Java 一致的。
    2 Stream,Reader 这些个概念还是不能丢,越来越发现基础的东西很重要
    3 正则表达式,超级有用,超级有用
    4 纯粹是一个功能验证~


    好困~

    相关文章

      网友评论

          本文标题:算不上虫

          本文链接:https://www.haomeiwen.com/subject/eufdiftx.html