为了便于使用及日后的扩展,将Scrapy简单封装为了Requester。
【爬虫学习笔记】DNS解析服务增加缓存机制
之前我们已经基于ARSoft.Tools.Net简单实现了DNS解析模块的功能,但是当性能要求升高时,每一次爬取都要进行DNS请求,甚至很有可能一段时间内每次请求的都是相同的地址,频繁的DNS请求就会成为性能瓶颈,所以我们要通过缓存机制将DNS解析结果缓存下来,降低DNS解析操作,提升系统性能。
【爬虫学习笔记】MemoryCache缓存的用法学习
在完成了DNS解析模块之后,我意识到了DNS缓存机制也很有必要。在Redis,Memcache,和.Net自带的Cache之间,考虑到部署问题,最终选择了后者,之前在学习Web及开发的过程中用过System.Web.Caching.Cache这个类库,但是这次的爬虫程序我打算部署为桌面软件,所以选用了System.Runtime.Caching.MemoryCache(后期如有必要也会加入System.Web.Caching.Cache来适配Web端程序)。
MemoryCache的使用网上介绍的不多,不过这个是.NET4.0新引入的缓存对象,估计主要是替换原来企业库的缓存模块,使得.NET的缓存可以无处不在,而不用基于特定的Windows版本上使用。
出于方便考虑,我们将不再实例化新的MemoryCache对象,只对MemoryCache的默认示例Memory.Default进行增删查操作。
基础操作
增加

增加缓存需要提供两个参数,CacheItem类表示缓存中的单个缓存项,
构造函数:
CacheItem(String, Object, String) 用缓存项的指定键、值和区域初始化新的 CacheItem 实例。
三个参数分别为:键、值和区域。
CacheItemPolicy类则表示缓存项的过期信息,只含有默认的构造函数。
增加一条缓存:
1 | var item = new CacheItem("习大大", "两学一做"); |
注意,如果要使用Sliding时间,则Absolute必须为DateTimeOffset.MaxValue,反之,则Sliding必须为TimeSpan.Zero
查询
缓存对象类似于字典集,查询可以直接采用memoryCache[key]来进行,例如我们查询一下前面插入的那条数据:
1 | var idea = MemoryCache.Default["习大大"]; |
移除

参数
key:要移除的缓存项的唯一标识符。
regionName:缓存中的一个添加了缓存项的命名区域。不要为该参数传递值。默认情况下,此参数为null,因为 MemoryCache 类未实现区域。
返回值
Type: System.Object 如果在缓存中找到该项,则为已移除的缓存项;否则为 null。
删除前面加入的那一项:
1 | MemoryCache.Default.Remove("习大大"); |
进一步封装
明白了基本的用法之后,我们就可以对它做进一步的封装,使之使用起来更为便捷:
1 | using System; |
【爬虫学习笔记】.Net 基于ARSoft.Tools.Net的DNS解析模块(半成品)
最近在做爬虫的作业,今天学习的内容是关于DNS解析模块的制作的。使用的库为ARSoft.Tools.Net,它是一个非常强大的开源DNS控件库,包含.Net SPF validation, SenderID validation以及DNS Client、DNS Server接口。使用该接口可轻松实现DNS客户请求端及服务器解析端。
【爬虫学习笔记】.Net 使用 ScrapySharp 并行下载天涯图片
一木禾网盘文件下载地址批量获取实现
流程清晰之后,我们就可以制作软件来对网盘地址链接批量处理得到下载链接。
一木禾网盘文件下载地址抓取分析
本文是对抓取一木禾网盘文件下载地址的整个流程就行分析,并依次解决其中各个环节涉及的技术问题。
C# TextBox Ctrl+A全选
Winform程序中光标在TextBox控件中时按下 Ctrl + A 快捷键,并不能选中全部文字,而是会发出警告音。本文给出实现方法。
C#激爽特性——扩展方法
在最近的学习中,发现了一种用起来特别爽的C#特性——扩展方法,之前拜读《大话设计模式》一书的时候,书中提到这样一句话:“反射,反射,程序员的快乐”,本人菜鸟一只,到现在还未曾使用过反射,对于其是否真的快乐自然无从体会,不过扩展方法用起来称得上是相当快乐!
C#线性筛法快速求出范围内的所有质数
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的数。本文列举了几种求区间内所有质数的算法。