ZCMS的Web采集(一):千万级别的网络爬虫
ZCMS的网页采集功能界面简洁,但功能强大,共由五部分组成:
一、一个大容量的页面文件容器。
1.1该容器能保存上千万的HTML、图片、视频,但又不能产生过多的小文件。
1.2该容器能通过URL快速存取文件(类似于HashMap)
1.3该容器支持压缩存放。
1.4该容器将页面的概要信息和内容分开存放。
1.5该容器的存取性能不随存取文件数量的增长有大的变化。
二、一个高效的HTTP下载器
2.1完全支持HTTP1.0/1.1
2.2支持Cookie
2.3支持HTTP压缩
2.4自动识别网页字符集
2.5能够处理链接跳转,包括302/303跳转、通过JS跳转以及通过Meta的refresh跳转。
2.6能够识别无限URL循环。
2.7能够自动识别分页的URL(即列表中的下一页,第几页等链接)
2.8能够处理ASP.NET形式的通过表单回发处理的分页。
2.9能够避免无限分页的情况(有的网站上永远有下一页,但下一页的内容总是和上一页相似)
2.10支持通过代理下载
2.11支持超时设置
2.12支持最大下载数
2.13支持多线程,可以设置线程数
三、一个完善的URL提取器
3.1能够从HTML中正确提取全路径URL
3.2支持过滤后缀
3.3为URL编码,但己编码的URL要能自动识别,避免再次编码
3.4只有符合指定形式的URL才提取
3.5支持过滤指定形式的URL
四、一个便利的结构化数据提取器
4.1能够通过模板方式提取结构化信息,模板应该简易,从代表性HTML中摘取经过简单修改即可提取(不能使用正则表达式,对于HTML正则表达式需要转义的字符过多)
4.2提取时能够自动得到一个二维表
4.3提取结果支持过滤掉指定形式的内容块(比如正文中的广告)
4.4能够自动下载正文中的图片
4.5能够去掉正文中的超链接
五、一个准确率较高的正文提取器
5.1以95%以上的准确率从HTML中提取文章正文
5.2自动识别首页和列表页,不从其中提取正文
5.3未成功提取正文时将Meta的Content中置为正文
将会以较多篇幅逐个介绍各部分的设计原理。
可以通过http://demo.zving.com体验