说明

网络爬虫就是在网上爬取内容的工具。本爬虫设计的是自定义搜索策略,针对搜索策略中的关键字匹配度对有用信息进行爬取并持久化。项目主要是根据用户自定义的抓取条件进行爬取相关内容,本文主要记录了这个项目设计思路,以及开发中遇到的一些问题的解决方法。

处理流程

  1.  

    发送搜索请求

  2. 进入搜索策略深度循环抓取URL

  3. 解析URL,抓取页面包含的URL(验证URL匹配度、当前页面重复URL去重处理、对后缀是文件的URL进行单独保存)

  4. 解析URL中的iframe ,进行下一深度解析抓取URL

  5. 验证新抓取的URL是否和已经抓取的URL重复,防止放入重复URL

  6. 标记已抓取URL下标,对当一深度抓取的URL进行再次解析

  7. 完成深度循环抓取任务,与数据库中已抓取URL去重

  8. 遍历抓取的URL,对内容进行解析

  9. 保存匹配信息,对抓去过信息的URL进行存储

  10. 获取文件URL链表,抓取文件进行本地存储

  11.  

    统计抓取结果,计算运行时间,返回结果

 

问题解决

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)验证抓取信息长度,对于长度过短的信息不进行存储。