上一篇文章我们提到可以利用爬虫技术和文献数据库的接口,抓取到我们需要查询的数据,并存储到本地的技术理念,实现了这一笔,就有了科技查新自动化的基石,进行二次系统开发才有可能。
今天我们继续上一篇文章讲爬虫和文献数据库交互的问题,比如如文献数据库,他们也有自己的保护机制,比如每个IP每秒钟或者每分钟,只能提交几次查询,超过了阈值后,文献数据库就会对此账号或者IP地址进行封锁,比如封锁10分钟或者1小时,这对于一个科技查新机构来说,是不可接受的,因为每天的客户委托单很多,很容易就触发了文献数据库的这种惩罚机制。
那我们要如何解决这个问题呢?我觉得查新机构的系统web服务器,可以是一台或者几台,如果是几台的话,数据库可以采用一台独立的服务器或者直接采用云数据库,前端界面分布在不同web服务器,减轻查新员打开系统的速度。
解决了查新员打开系统速度后,就要解决文献数据库封锁IP的问题,那我们就要尽量多的从不同的IP地址派出爬虫和文献数据库接触,比如系统有一个总开关,统计每次在不同的IP到特定文献数据库的时间,web服务器本身有个IP可以直接够文献数据库API打交道,然后我们可以再弹性增加一些中转代理服务器,每个代理服务器也有个自己的IP,系统总开关统计web服务器IP和代理服务器IP,并在查新员提交插查询请求的时候,根据之前1个小时的IP和不同文献数据库查询的频率,给出一个最优解,既此IP和需要查询的文献数据库是最长时间没有交互过的,通过这个IP,派出爬虫去和文献数据库打交道,这样就可以尽最大可能避免被封,避免影响自动查新的工作效率。
如果总开关检测到每个IP和对应的文献数据库,都不符合避免被封的规律,系统则把此查询自动推迟,并在前端弹出警示文字,告知查新员,查询饱和,此查询正在排队,查新员可以在界面等待,也可以对另一个客户的委托单进行处理,如果不是同一个文献数据库的,就可以双线作战,打开新的页面,进行查新工作,那边可能就可以直接出结果。
等到等待时间到了,这边就可以自动出结果了,查新员可以回过头来继续工作,代理服务器越多,出现等待的概率越低,IP越少,任务进入队列的概率越大,会影响工作效率。