说明
网络爬虫就是在网上爬取内容的工具。本爬虫设计的是自定义搜索策略,针对搜索策略中的关键字匹配度对有用信息进行爬取并持久化。项目主要是根据用户自定义的抓取条件进行爬取相关内容,本文主要记录了这个项目设计思路,以及开发中遇到的一些问题的解决方法。
处理流程
-
发送搜索请求
-
进入搜索策略深度循环抓取URL
-
解析URL,抓取页面包含的URL(验证URL匹配度、当前页面重复URL去重处理、对后缀是文件的URL进行单独保存)
-
解析URL中的iframe ,进行下一深度解析抓取URL
-
验证新抓取的URL是否和已经抓取的URL重复,防止放入重复URL
-
标记已抓取URL下标,对当一深度抓取的URL进行再次解析
-
完成深度循环抓取任务,与数据库中已抓取URL去重
-
遍历抓取的URL,对内容进行解析
-
保存匹配信息,对抓去过信息的URL进行存储
-
获取文件URL链表,抓取文件进行本地存储
-
统计抓取结果,计算运行时间,返回结果
问题解决
1.JS请求无法抓取(包括JS分页、JS发送的请求)
a)暂时无法解决。
2.Iframe内容无法抓取
a)对每个URL地址搜索Iframe,获取iframe包含的下一深度的URL并解析。
b)详见:com.hikvision.netcrawler.utils.ParserUtils中的parserIframe方法。
3.部分网页乱码
a)暂时无法解决。
4.链接超时异常,无法找到页面导致抓取不全
a)抓取链接超时异常并重新调用当前方法。
b)记录每个链接超时异常的链接,记录次数,设定最大重访问次数,防止死循环的发生。
5.关键字匹配信息字段过长,持久化异常
a)修改数据库中存储字段格式为text。
6.部分链接文字存入信息表中
a)验证抓取信息长度,对于长度过短的信息不进行存储。