你的位置:首页 > 软件开发 > ASP.net > 爬虫之博客园精华客户端

爬虫之博客园精华客户端

发布时间:2016-11-30 17:00:17
在博客园学习知识是很方便的,但若做成客户端,自定义获取数据,那就更好啦!  那么需求有哪些呢,第一,我只查看推荐数大于2的文章;第二,我想要只查看C#或者Java的文章;第三,我想要查看推荐数大于2的新闻;第四,我还想搜索文章,并且只搜索推荐数大于2的文章。  先来预览一下成品吧 ...

  在博客园学习知识是很方便的,但若做成客户端,自定义获取数据,那就更好啦!

  那么需求有哪些呢,第一,我只查看推荐数大于2的文章;第二,我想要只查看C#或者Java的文章;第三,我想要查看推荐数大于2的新闻;第四,我还想搜索文章,并且只搜索推荐数大于2的文章。

  先来预览一下成品吧

爬虫之博客园精华客户端

  其中列表里左边是推荐数,反正我是优先看推荐数多的,中间是标题,右边是日期,至于其他信息,额,我其实不太关心,点击一行后直接在浏览器打开。

  额,大体先这样吧,那么实现这些功能需要什么技能呢,首先我得准备一下通用类,大概需要web请求的帮助类、Gzip格式网页的加解密帮助类、html字符串解析的帮助类。

  • web请求的帮助类:WebHelper
  public class WebHelper  {    public readonly WebClient Web = new WebClient();    //错误重试次数    private int _tryTimes;    public Encoding Encoding    {      set      {        Web.Encoding = value;      }    }    public WebHelper()    {      Web.Encoding = Encoding.UTF8;    }    public WebHelper(Encoding encoding)    {      Web.Encoding = encoding;    }    /// <summary>    /// 下载请求的资源    /// </summary>    /// <param name="url">URL</param>    /// <returns></returns>    public get='_blank'>string DownloadString(string url)    {      try      {        return Web.DownloadString(url);      }      catch(WebException e)      {        if (e.Message.Contains("404") || e.Status == WebExceptionStatus.ConnectFailure || e.Status == WebExceptionStatus.ProtocolError || _tryTimes == 2)        {          _tryTimes = 0;          return null;        }        _tryTimes++;        return DownloadString(url);      }    }    /// <summary>    /// 将指定的字符串上载到指定的资源    /// </summary>    /// <param name="address">地址</param>    /// <param name="data">参数</param>    /// <returns></returns>    public string UploadString(string address, string data)    {      Web.Headers.Add("Content-Type", "application/x-www-form-urlencoded");      try      {        return Web.UploadString(address, "POST", data);      }      catch      {        if (_tryTimes == 2)        {          _tryTimes = 0;          return null;        }        _tryTimes++;        return UploadString(address, data);      }    }    /// <summary>    ///   下载请求的资源(资源采用Gzip压缩)    /// </summary>    /// <param name="url">URL</param>    /// <param name="encoding">页面编码格式</param>    /// <returns></returns>    public string DownloadGzipString(string url, Encoding encoding)    {      Web.Headers.Add("Accept-Encoding", "gzip");      try      {        return encoding.GetString(ZipHelper.GzipDecompress(Web.DownloadData(url)));      }      catch (WebException e)      {        if (e.Message.Contains("404") || e.Status == WebExceptionStatus.ConnectFailure ||          e.Status == WebExceptionStatus.ProtocolError || _tryTimes == 2)        {          _tryTimes = 0;          return null;        }        _tryTimes++;        return DownloadGzipString(url, encoding);      }      finally      {        Web.Headers.Remove("Accept-Encoding");      }    }  }

原标题:爬虫之博客园精华客户端

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录