借鉴StanZhai核心代码,写了个博客园多线程离线采集器

借鉴StanZhai核心代码,写了个博客园采集器,实现了文章正文和页面图片本地化,可以当成离线阅读器使用。

收录的文章,概要信息写入sqlite数据库,可实现标题、正文的检索,功能比较简单,自己用应该挺方便的。

自认为知识点有几个:

1、提取正文

一般来说,提取正文用正则要好一点,但是如果文章模板不同,那么写正则的工作量就太大了,并且也不好针对每个网页写正则。所幸,StanZhai早就对这个问题进行了研究,并进行了实现(百度“网页正文提取”)。找的资料中,StanZhai用c#做了一个很好的实现,看了两遍,感觉自己心思静不下来,思路能看懂,但是细节看不懂,可能有些是在具体实践中总结出来的,自己没有体会,所以领悟起来比较困难。索性就先不管了,直接拿来用吧。

2、多线程

自己用多线程写程序时,是另一个思路,感觉代码比较乱,不太灵活,在学习翟大师的采集器源码时,感觉豁然开朗,对C#的多线程理解一下子深刻许多。在对他的源码进行研究后,我决定重写一遍,一方面是学习借鉴,另一方面是改进。因为我有离线阅读的这个需求,因此,重点对这块进行了改进。在对含标签的正文保存成网页格式后,我又将正文去除标签后的文本保存为txt,在将来做检索时用。网页调用的图片,都下载到本地了,不过没有用多线程,只是用了普通的download。

3、界面假死

这是个初级问题,与上面两个比起来,简直不值一提。但是也拿来说说吧,如果能给其他同志带来帮助,也算有点用处吧。主要的实现就是三步:

public delegate void ShowMessDele(string str);

public void ShowMess(string str){ label1.text = str;};

Invoke(new ShowMessDele(ShowMess),new object[]{"显示信息";});    //本句在线程里执行

 

其他的感觉就没有什么值得说的地方了,还是上图吧,有图有真相。

软件连图标和布局都是借鉴翟大师的,真是不好意思了。如有意见,我马上改正。

在此衷心的感谢


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值