首页 创业指南 致富视频 网上开店 养殖视频 范文大全 创业项目开店经验创业杂谈如何创业技术资料创业防骗项目分析微信营销农村创业投资理财
  • 我爱发明
  • 每日农经
  • 生财有道
  • 创富英雄
  • 聚焦三农
  • 做法视频
  • 开讲啦
  • 基于Ajax的聚焦网络爬虫技术在科研项目管理系统中的应用

    时间:2023-01-09 20:00:05 来源:东东创业网 本文已影响 东东创业网手机站

    相关热词搜索:

    龙辉

    四川省科学技术信息研究所,四川成都,610016

    科研人员在做课题研究时,经常需要查阅、参考、研究大量科研项目的资料文献等。当前,在科研项目管理这个庞大的体系内,存在级别各异、类型多样的科研项目管理系统和科研资料平台,分别由不同的开发单位独立建设,被不同层级的管理机构进行管理;
    同时,现有的科研项目管理平台往往出于安全性能方面的考虑,对用户的密码登录验证较为严格,并且由于平台的开发者不同,尚没有一个统一的访问接口来实现各个平台的数据交换与共享。这都为获取项目的资料信息增加了难度,科研人员只能逐个手工登录访问这些科研项目管理平台,然后通过人工搜索相关领域的信息,查看特定主题下的项目信息,并手动下载需要的文档,再对获取的信息和文档完成后续的处理与研究。这种传统互联网下的科研工作方式,使科研人员耗费了很多时间和精力。本文利用基于Ajax的聚焦网络爬虫技术,通过模拟登录不同的科研项目管理平台,定制搜索习惯,精准抓取特定领域的科研数据与文档,帮助科研人员便捷、高效地获取科研项目信息和相关资料文档。

    聚焦网络爬虫(focused crawler),也被称为主题网络爬虫,是一种根据某一特定主题自主采集Web页面内容的爬虫程序[1]。传统的聚焦网络爬虫工作流程比较繁琐:首先,根据基于网页内容或链接结构的页面分析算法筛掉与主题匹配度低的网页url,保留与主题相关度高的网页url,并存入下一步待分析的网页链接队列中;
    然后,根据实际情况选取一种搜索策略,常用的策略有基于链接结构评价的爬取策略和基于内容评价的爬取策略等,计算每个链接的比重,按照与主题的相关程度决定下一步要访问的网页url[2-3];
    不断循环上述步骤,一旦满足事先设置的停止条件便可停止爬取。爬虫程序将所有爬取下来的、与主题相关的网页数据存储在系统中,并为后续的过滤、分析建立索引。由于科研项目种类繁多,项目信息的数据结构复杂,这种传统的爬虫技术对特定专题领域的信息难以做到精确描述,搜索策略和页面过滤算法过于多样复杂,在时间和资源方面消耗较大。因此,科研项目信息采集结果的精确度和匹配度有很大提升空间。

    本系统采用的是基于Ajax的聚焦网络爬虫技术,与传统爬虫技术不同,除了要解析页面中的数据信息和超链接信息,还要解析JavaScript文件和JavaScript代码,从而得到更精确的采集内容。系统由网页获取模块、源码分析模块、JavaScript解析模块、DOM支持模块以及最终页面生成模块五部分组成(图1):
    网页获取模块通过模拟登录后发送HTTP请求,读取需要爬取和分析的页面;
    源码分析模块主要用于解析Web页面的html元素,区分页面中的超链接、JavaScript文件或者其他代码;
    JavaScript解析模块解析并执行页面中的JavaScript代码,这些代码中包含Ajax调用,执行后从服务器返回得到的HTTP请求内容;
    得到request返回的内容后,通过DOM支持模块在网页源代码中修改页面内容,最终得到目标页面,从而获取科研项目的详细信息。

    图1 系统模块

    2.1 基于模拟登录的网页获取

    出于信息安全方面的考虑,大多数科研项目管理系统都要使用者在经过身份认证后才能获取完整的项目内容及科研资料。浏览器接收用户输入的账号密码等登录信息,从保存的cookie中获取身份认证信息,自动生成会话session后,才会展示完整的项目详情页面[4]。也就是说,服务器无法对网络爬虫程序的访问回应自动产生session。因此,要想通过网络爬虫程序获取特定的科研项目信息页面或科研资料,首先必须解决身份认证即用户登录问题。本系统可以通过模拟登录把登录用户名、密码、系统时间戳等必要的身份认证信息附加在post或get请求中,再通过访问目标服务器产生cookie,实现登录的效果。该过程具体可分为以下三步。

    (1)获取登录秘钥:程序把利用base64编码后的用户名以及系统当前时间戳结合目标url形成新的目标url,然后发送get请求,向服务器请求访问该url。从request返回的请求得到当前服务器的时间戳server time、随机码code以及利用RSA算法加密的秘钥rsakv[5]。

    (2)加密用户密码:利用上一步得到的加密秘钥rsakv和随机码code,结合公钥rsakt,采用RSA算法对请求中登录用户的密码完成加密,得到一个加密后的新密码。

    (3)获取登录凭证:将前两步获取的编码用户名和加密密码以及服务器的系统时间戳等正确的身份认证信息附加在 post请求中,访问目标服务器登录url,便能得到服务器返回的登录认证凭证;
    将该凭证保存在浏览器cookie中,之后每次访问目标页面url时,只需将该cookie附加在网页会话session中,经过地址重定向,就可以访问获取目标网页的完整数据信息内容。关键代码如图2所示。

    图2 模拟登录关键代码

    2.2 网页分析

    网页分析模块的主要功能是分析Web页面的html元素信息。本模块优于传统的爬虫程序之处在于,不仅分析了页面中的超链接标签和html元素,还分析了<script>标签。如果是JavaScript脚本文件,则向服务器发送HTTP请求获取此脚本文件,并存储到本地系统;
    如果是JavaScript脚本代码,则创建该脚本的临时文件保存在本地系统,供后续js解析模块分析使用,具体流程如图3所示。

    图3 js解析流程

    2.3 js解析

    传统的爬虫程序在获取网页后,仅仅分析页面源码中的超链接标签,然后通过这些链接去访问并获取下一个网页[6]。但对于使用Ajax技术的Web网页,其页面源码中的有效信息含量较低,大多数有效数据信息是Ajax通过执行异步调用后加载实现的,因此在原始html页面源码中,这些后加载的页面信息均为后装载形成的。所以还需要解析这个原始页面源码中的JavaScript代码,识别并调用Ajax的代码内容,向服务器发起请求并接收。为了能够执行这些代码,系统还需要扩展JavaScript解析器。

    2.4 DOM支持

    对于使用了Ajax技术的科研项目管理系统,其目标网页中的JavaScript源码除了包含调用Ajax的语句,还可能包含可修改DOM树的代码[7]。例如:可改变某个页面元素呈现状态(颜色、位置等)的语句,或者可以控制某个页面元素的显示、隐藏等。正是有了这些语句,Ajax技术才可以动态加载显示页面内容[8]。由于JavaScript解析器只能解析最原始的JavaScript代码[9],无法得知哪些页面元素将被修改,即无法解析这些操作DOM树的网页源码[10]。因此,为了支持js代码中的DOM操作,需扩展JavaScript解析器[11],主要包括获取页面元素、修改页面元素的呈现状态等[12]。

    2.5 页面生成

    通过上述模块处理,最终得到所需的目标页面及文件。在本系统中,获取的科研项目信息如图4所示。

    图4 爬虫结果

    基于Ajax的网络爬虫技术在科研项目管理系统中的应用,不仅可以解决各个子系统之间的数据资源共享难题,还可以简化科研人员获取科研资料的过程,有助于提升科研效率。通过本系统,四川省科研项目管理平台和科技报告呈交共享系统已实现科研数据互通及科研项目内容共享。经过实践可证明,本系统的技术是正确、可行且高效的。

    猜你喜欢 爬虫科研项目代码 科研项目财务风险及费用内控探究经营者(2022年1期)2022-11-14利用网络爬虫技术验证房地产灰犀牛之说房地产导刊(2022年10期)2022-10-18医院科研项目信息化管理应用探讨中国信息化(2022年3期)2022-04-06基于Python的网络爬虫和反爬虫技术研究现代信息科技(2021年21期)2021-05-07浅谈高校科研项目管理模式的创新知识文库(2019年18期)2019-10-20基于Scrapy框架的分布式网络爬虫的研究与实现智能计算机与应用(2018年5期)2018-10-20谁抢走了低价机票电脑知识与技术·经验技巧(2018年1期)2018-05-30神秘的代码新高考·高二数学(2016年7期)2017-01-23一周机构净增(减)仓股前20名股市动态分析(2016年17期)2016-10-20重要股东二级市场增、减持明细股市动态分析(2016年17期)2016-10-20
    • 创业指南
    • 网上开店
    • 养殖视频
    • 理财
    • 政策
    • 技术
    • 致富视频

    推荐访问