说下我爬虫把
imjl
2008-08-07
生产语言:c#,算法测试:php
第一步: 1:爬取网站,检测字符编码,获取正确信息(用c#在无法获得字符编码信息时,只能取两次,如果有谁知道一次性能取说下) 2:没有做dns cache,强制爬取,所以没解析robots 3:爬到内容,经过很复杂的计算,获得想要的信息。(c#正则时死了N次,现在只能避开,不能解决) 4:输出结构化信息,也就是List<outObj> 第二步: 1:加上多线程,采用了一个c#的线程池 2:将信息输出成文件。一个url对应一个文件 3:爬取的统计报告 第三步: 1:定时解析文件,按照特定计算方式生成结果,更新数据库。 2:解析的统计报告 第一步:部分网站需要cookie支持,会跳转,带框架(frame,iframe),内容不一定取得到,所以要设置超时,内容一定要能正确阅读,所以解析编码很重要。 第二步:文件存储以及计算,用了md5。数据量不大,大概17万,采用三层文件夹(年、月、日)来解决文件夹文件限制。 第三步:观察了下cpu,cpu占用很低,内存释放正常,占用也不高(同时开了两个进程,每个进程25个线程上限),所以背后还能做点统计汇总工作。 我没有解决的: JS的输出信息(要定制,但是我做得是模糊匹配,所以暂时放弃),需要用户登录的不符合我目前的要求,所以也放弃。 收获:学习了c#,之前不会,现在也不会,勉强写了这个。 规模太小,大概就一两台老服务器跑。 |