面向
科研
统计
机构
发表
论文
数据
知网
嘉兴
SOFTWARE2022软 件第 43 卷 第 12 期2022 年Vol.43,No.12基金项目:2021 年江苏省大学生创新创业训练计划资助项目(202113987004Y)作者简介:吴嘉兴(2001),男,广西北海人,本科,研究方向:软件开发;王玉龙(2000),男,四川泸州人,本科,研究方向:软件开发。通讯作者:孙美凤(1970),女,江苏泰州人,博士研究生,副教授,研究方向:网络安全及信息处理。面向科研统计的机构发表论文数据的爬取以知网为例吴嘉兴 王玉龙 孙美凤(扬州大学广陵学院,江苏扬州 225000)摘要:为了提高科研统计的效率,研究从文献数据库中自动获取机构发表论文数据的问题。给出了发表论文数据的爬虫程序设计,探讨了其关键环节即爬取网页源码和提取论文数据的实现方法。编写程序从知网数据库中爬取了某机构发表论文,结果与人工检索一致。关键词:网络爬虫;科研统计;知网数据库中图分类号:TP391.1文献标识码:ADOI:10.3969/j.issn.1003-6970.2022.12.008本文著录格式:吴嘉兴,王玉龙,孙美凤.面向科研统计的机构发表论文数据的爬取以知网为例J.软件,2022,43(12):031-035Crawling the Data of Papers for Scientific Research Statistics:Taking HowNet as an Example WU Jiaxing,WANG Yulong,SUN Meifeng(Guangling Collage,Yangzhou University,Yangzhou Jiangsu 225000)【Abstract】:Inordertoimprovetheefficiencyofscientificresearchstatistics,theproblemofautomaticallyobtainingthedataaboutpaperspublishedbyaninstitutionfromtheliteraturedatabaseisstudied.Thispaperpresentsthedesignofaprogramcrawlingdataofpapers,anddiscussestheimplementationmethodofitskeysteps,thatare,crawlingwebpagesourcecodeandextractingpaperdata.ThispapercompilestheprogramandactuallycrawlsthepaperdataofanorganizationfromtheHowNetdatabase,andtheresultsareconsistentwiththemanualretrieval.【Key words】:webcrawler;scientificresearchstatistics;HowNetdatabase基金项目论文0 引言论文是科学发现和科学研究很重要的成果和载体,发表论文的数量和质量一直被视为大学、科研院所研究实力的表示,因此高校、科研院所都非常重视本单位的论文发表,与之相适应,登记、审核本单位发表论文情况是科研管理的一项基本工作。通常论文登记、审核的流程是这样的:首先是论文作者个人填报,经层层汇总后形成单位发表论文汇总表;然后由专门的审核人员对正确性把关;最后基于审核确认过的数据进行各项日常科研管理工作。传统的科研管理系统基本照搬上述流程,且其中关键的审核环节在系统外人工完成,系统不过提供了审核结果的存储。网络爬虫是一种按照一定规则,自动抓取 WWW信息的程序或者脚本,其很早就在搜索引擎中得到应用。近年来,随着对在线数据深度分析和利用的兴起1-3,对爬虫技术的研究和应用成为热点4-8。其中,文献 6 和文献 8 和本文内容有交叉,但是文献 6 的关注点在于爬取多个论文数据源的效率和结果的融合;文献 8 提出利用网络爬虫变传统科研管理系统的人工审核为自动审核,两者均缺乏爬虫的实现细节。本文具体研究面向科研统计的单位发表论文数据的爬取的实现。比较国内提供文献服务的三大中文数据库32软 件第 43 卷 第 12 期SOFTWARE网站(知网、万方、维普),可以发现知网数据库提供的论文信息最为详细,对科研统计的支持最为全面,因此本文仅以知网为例,但包含其中的分析和设计方法同样适用于其他数据源。1 机构发表论文数据的爬虫程序设计正如文献 1 指出的,网络爬虫是自动抓取 WWW信息的程序或者脚本。由于 WWW 网页被设计为通过浏览器的人工访问,显然为了爬取某个网页,首先了解人工获取该网页信息时,必须经历的过程,然后正确地模拟出浏览器发出的网络行为获取网页源码,并从中提取想要的信息。那么当用户想从知网数据库中获取单位发表论文数据时,将做什么呢?必定是首先以“作者单位”和“发表年度”为关键字检索到单位发表论文的列表;然后进一步点开指向每篇论文的链接,访问论文详情以获取科研统计非常关注的作者排名、单位排名、期刊收录信息等,显然论文详情页的访问信息包含在列表页中。综上,得到以作者单位和发表年度为关键词的单位发表论文数据的爬虫程序的结构,如图 1 所示。2 机构发表论文数据的爬虫程序实现以知网为例图 1 爬虫程序中,无论是爬取论文列表还是爬取论文详情,都由两个动作组成:爬取网页源码和提取论文信息,下面分别讨论其实现。2.1 爬取网页源码如图 2 所示是 WWW 的工作过程示意图。浏览器与WWW 服务器按照 HTTP 协议规则交互,HTTP 协议是一个无状态协议:首先双方建立 TCP 连接,然后由浏览器向 WWW 服务器发出 HTTP 请求报文,再然后WWW 服务器向浏览器返回 HTTP 响应报文,最后释放 TCP 连接。网页源码就包含在 HTTP 响应报文中,若想 WWW 服务器做出期望的反应、返回包含爬取信息的网页源码,关键则是构造的 HTTP 请求报文能够通过 WWW 服务器程序的检查。由于 WWW 的超连接特性,展现在浏览器窗口的一幅图文并茂的画面,通常由多个网页组成,爬取动作必须首先分析出爬取信息所在的网页,然后进一步分析出该网页的请求报文。目前浏览器普遍带有一个扩展功图 1 爬取某单位发表论文数据的程序的结构Fig.1 Structure of program crawling the data about papers published by an unit图 2 WWW 的工作过程9Fig.2 Working process of WWW作者单位=Unit 发表年度=Year 基于 Unit 和 Year 构造请求,爬取论文列表页源码 解析论文列表页源码,提取论文名、发表时间、论文详情页请求参数=paper_arr基于 paper_arri中的论文详情页请求参数构造请求,爬取论文详情页源码 解析论文详情页源码,提取作者及其排名信息、单位及其排名信息、发表年度、卷号、期号、收录信息等=paper_arriPaper_arr.length HTTP浏览器WWW服务器请求文档释放TCP连接建立TCP连接请求文档HTTP请求报文HTTP响应报文33吴嘉兴王玉龙孙美凤:面向科研统计的机构发表论文数据的爬取以知网为例能即开发者工具,可在用户访问网页的同时,截获浏览器与 WWW 服务器之间的所有交互报文,对该项任务提供了完美的支持。如图 3 所示是以“作者单位=扬州大学广陵学院”且“发表年度=2021”为条件检索论文列表时,通过开发者工具截获到的网络交互情况。左侧窗口按时间顺序列出一个个交互的请求概要信息;右侧窗口展示焦点交互的具体内容,包括消息头、Cookie、请求实体、响应实体等。逐个查看图 3 中每个交互的响应实体,便可定位出论文列表页的请求为“POSThttps:/ POST 参数。经测试,必要的头部字段有 5 个:“X-Requested-With”“Content-Type”“User-Agent”“Origin”“Referer”;主要的 POST 参数有:“QueryJson”,其包含查询条件“作者单位”和“发表年度”;“CurPage”表示待爬取论文列表页的页号;“RecordsCntPerPage”表示每页的记录数;“SearchSQL”是个动态参数,第一次访问论文列表页不需要这个参数,后续访问时其值为前一次访问的论文列表页源码中的元素“inputid=sqlVal”的值。如图4所示是访问论文详情页时截取到的网络交互情况。采用同样方法可定位出论文详情页的请求为“GEThttps:/ 3 以“作者单位=扬州大学广陵学院”且“发表年度=2021”为条件检索知网数据库时的网络报文Fig.3 Network message when searching HowNet database under the condition of author unit=Guangling College of Yangzhou University and publication year=2021图 4 访问论文详情页时的网络报文 Fig.4 Network message when visiting the paper details page34软 件第 43 卷 第 12 期SOFTWARE 图 3 知网论文列表页的 DOM 树 Fig.3 DOM tree of HowNet paper list page 图 4 知网论文详情页的 DOM 树 Fig.4 DOM tree of HowNet paper details page divid=gridTable:i 0in td class=seq 序号:0:0:0:0:0:0 下载次数 被引次数 发表时间 刊名 作者 篇名 Table class=result-tablelist href=/KNS8/Detail?.&FileName=&DbName=&Dbcode=td class=name td class=author td class=source td class=date td class=quote td class=download divclass=wrapper divclass=doc-top:0:0:0:0:1 年,卷号(期号)期刊名 收录数据库 i:2:0:0 篇名:1:i;0in:0 作者名 1,2 iclass=icon-email:2 div class=row span class=rowtit p class=funds 基金资助 排名 i 的单位名称基金名称 i:i;0in:i;0in:i;0in 注:元素、iclass=icon-email可能不图 6 知网论文详情页的 DOM 树Fig.6 DOM tree of HowNet paper details page 图 3 知网论文列表页的 DOM 树 Fig.3 DOM tree of HowNet paper list page 图 4 知网论文详情页的 DOM 树 Fig.4 DOM tree of HowNet paper details page divid=gridTable:i 0in td class=seq 序号:0:0:0:0:0:0 下载次数 被引次数 发表时间 刊名 作者 篇名 Table class=result-tablelist href=/KNS8/Detail?.&FileName=&DbName=&Dbcode=td class=name td class=author td class=source td class=date td class=quote td class=download divclass=wrapper divclass=doc-top:0:0:0:0:1 年,卷号(期号)期刊名 收录数据库 i:2:0:0 篇名:1:i;0in:0