• 借鉴StanZhai核心代码,写了个博客园采集器


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

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

    自认为知识点有几个:

    1、提取正文

    一般来说,提取正文用正则要好一点,但是如果文章模板不同,那么写正则的工作量就太大了,并且也不好针对每个网页写正则。所幸,有高人早就对这个问题进行了研究,并进行了实现(百度“网页正文提取”)。找的资料中,翟士丹大师用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[]{"显示信息";});    //本句在线程里执行

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

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

    在此衷心的感谢

  • 相关阅读:
    tomcat启动Publishing failed with multiple errors
    oracle中merge into用法解析
    ORACLE数据库导出表,字段名,长度,类型,字段注释,表注释语句
    orcale的to_number方法
    Git删除无效远程分支
    .net core文件系统简介
    PowerShell的一些资料整理
    Jetbrains推出了一款新的编程字体Mono
    .net core程序强制以管理员权限启动
    在Asp.net Razor Pages/MVC程序中集成Blazor
  • 原文地址:https://www.cnblogs.com/theluther/p/3936108.html
Copyright © 2020-2023  润新知