龍學磊 田萌 徐英 王虹


摘 ?要:科技文獻檢索貫穿于整個科研活動的生命周期,從科研項目的申請、立項,到方案的設計與實現,再到論文的撰寫與結題驗收,都離不開科技文獻檢索的支持,傳統的科技文獻檢索方式往往效率低下且準確性不高。近些年,網絡爬蟲技術被廣泛應用于互聯網搜索引擎當中,可以按照預先設定好的規則自動地抓取特定網站信息。文章主要介紹了如何使用網絡爬蟲技術實現科技文獻檢索,從而大大提高科技文獻檢索效率及準確性,更好地為科研工作服務。
關鍵詞:科技創新;文獻檢索;網絡爬蟲;Python;Selenium
中圖分類號:TP391 ? ? ? 文獻標識碼:A文章編號:2096-4706(2021)24-0150-03
Abstract: Scientific and technological literature retrieval runs through the whole life cycle of scientific research activities. From the application and establishment of scientific research projects, to the design and implementation of schemes, then to the writing and final acceptance of papers, it is inseparable from the support of scientific and technological literature retrieval. The traditional scientific and technological literature retrieval methods are often inefficient and inaccurate. In recent years, web crawler technology is widely used in Internet search engines, which can automatically grab specific website information according to preset rules. This paper mainly introduces how to use web crawler technology to realize scientific and technological literature retrieval, thus greatly improve the efficiency and accuracy of scientific and technological literature retrieval and better serve for the scientific research work.
Keywords: science and technology innovation; literature retrieval; web crawler; Python; Selenium
0 ?引 ?言
科研工作大致可以分為四個基本步驟,即科研選題、資料收集、研究試驗、論文撰寫。每一步都離不開科技文獻檢索的支持,如果能夠掌握一種高效準確的科技文獻檢索方式,可以達到事半功倍的效果,確保科研工作順利開展。
科技文獻檢索是以現代信息檢索技術為核心,對科技文獻進行深層次分析和利用的技術,可以使科研人員從繁重的搜索分析工作中解脫出來,從海量的信息中獲得最想要的信息。
科技文獻檢索為科研人員的選題工作提供基礎保障,如果檢索一旦出現偏差將直接影響到科研項目的進度,甚至使整個科研項目走向失敗。精準的科技文獻檢索,可以使科研人員快速、準確的獲得自己所需的關鍵信息,大大節省搜集材料的時間,進而積極的推進整個科研項目進程[1]。
傳統的檢索方式多采用手工操作的方式完成,由科研人員利用互聯網在搜索引擎中錄入想要獲得的關鍵字,然后對搜索結果進行人工篩選,而海量數據帶來的“信息過載”問題,大大增加了科研人員的檢索時間,也降低了查找準確性,嚴重影響了工作效率。
科技文獻檢索能力的高低,往往影響著科研成果的價值。每年的科研工作中會產生大量的科技文獻檢索需求,但受制于個人因素及技術限制,往往不能達到理想的效果。如何利用網絡爬蟲技術進行科技文獻檢索,協助廣大科研工作者做好科研工作,就成為一個新的課題。
1 ?Python + Selenium + Chrome Driver瀏覽器爬蟲介紹
1.1 ?Python語言
Python是一種面向對象的動態數據類型腳本語言,不僅簡潔、易用,而且功能強大[2],具有跨平臺性、開發效率高、開源、可移植性好并且支持非常豐富的第三方庫等的特點[3],現在廣泛應用于科學計算與科學統計工作、人工智能開發、網絡爬蟲等方面。
1.2 ?Selenium工具
Selenium是ThoughtWorks公司專門為Web應用程序編寫的一個驗收測試工具,它直接運行在瀏覽器中,完全模擬瀏覽器的操作[4],比如跳轉、輸入、點擊、下拉等,通過代碼控制與頁面上元素進行交互(點擊、輸入等),獲取指定元素的內容。測試工程師可以使用多種開發語言如Java、C#、Python等來編寫測試腳本,并且能夠在多種不同的瀏覽器中執行測試腳本[5]。
Selenium是Web應用程序的自動化測試工具[6],可以模擬網站自動化測試、網站模擬登陸、自動操作鍵盤和鼠標、測試瀏覽器兼容性、測試網站功能等操作,就像模擬真實用戶的操作,在爬蟲中被廣泛使用[7]。
1.3 ?Chrome Driver瀏覽器驅動
Chrome Driver是實現 Web Driver 有線協議的一個開源工具,Selenium借助Chrome Driver通關操控Chrome的自動代理框架控制瀏覽器,它提供了導航到網頁、用戶輸入、JavaScript執行等的能力。
1.4 ?Python + Selenium + Chrome Driver瀏覽器爬蟲優缺點
1.4.1 ?優點
Python最常用的爬蟲框架為Scrapy框架,引擎控制調度器將request加入其中,調度器處理完成之后再送回引擎[8],但在模擬一些比較復雜的場景時,如輸入驗證碼、滑動驗證、登錄等操作時,無法解析js運行效果,無法達到最佳爬取效果。
Python + Selenium + Chrome Driver瀏覽器爬蟲模擬瀏覽器的訪問操作,可以較好的執行js運行,當遇到復雜的滑動校驗和需要登錄時都能實現滿意的爬取效果[9]。
1.4.2 ?缺點
使用selenium本質上是驅動瀏覽器對目標站點發送請求,那瀏覽器在訪問目標站點的時候,需要把靜態資源都加載完畢。html、css、js這些文件都要等待它加載完成,速度特別慢。由于在獲取頁面的過程中會發起多次交互請求,所以執行效率較低。
2 ?網絡爬蟲在科技文獻檢索中的具體實現
2.1 ?爬取對象選取
知網已成為當下廣大科研工作者進行科技文獻查詢的首選網站,我們以此網站為爬取對象,通過知網檢索關鍵字,之后抓取相關文章的標題、作者、摘要、關鍵詞等信息。
2.2 ?爬取原理
爬取原理具體內容有:
(1)運行Python腳本程序,調用Selenium測試工具啟動Chrome Driver瀏覽器驅動,開始啟動并開啟偵聽端口,并自動創建session,保持瀏覽器和對應客戶端的會話連接;
(2)輸入搜索條件,向瀏覽器發送http請求;
(3)模擬瀏覽器運行,將爬取結果記入到列表當中;
(4)判斷爬取是否完成,如果完成則終止腳本運行,如未完成則重復執行(3)中操作,如圖1所示。
2.3 ?具體實現
由于知網(http://www.cnki.net)采用反爬技術,無法正常獲取相關文章信息,只得選取移動端(http://wap.cnki.net/)作為網絡爬蟲的入口地址。
2.3.1 ?引入Selenium測試工具
使用“pip install selenium”安裝Selenium測試工具,并將相關頭文件放置在程序最開頭部分。
2.3.2 ?啟動Chrome Driver瀏覽器驅動并完成初始化
啟動Chrome Driver瀏覽器驅動并完成初始化的具體步驟是:
(1)設置谷歌瀏覽器驅動器的環境:
options = webdriver.ChromeOptions()
(2)創建一個谷歌瀏覽器驅動器:
browser = webdriver.Chrome(options=options)
(3)分析首頁信息,模擬搜索過程:
打開移動端訪問頁面,按F12進入到調試模式,通過分析找到輸入框及搜索按鈕id值分別為“keyword”和“btn-search”。
(4)找到輸入框的id,并將要搜索的關鍵字傳遞到輸入框當中
browser.find_element_by_id(‘keyword).click()
browser.find_element_by_id(‘keyword_ordinary).send_keys(key_words)
(5)輸入關鍵字之后,模擬點擊瀏覽器搜索按鈕事件
browser.find_element_by_class_name(‘btn-search ‘).click()
2.4 ?進入二級頁面獲取詳細信息
使用find_element_by_class_name()方法獲取文獻的題目、作者、摘要等信息,并存儲到列表當中。具體內容有:
(1)獲取文獻的題目:
name = div.find_element_by_class_name(‘c-company__body-title).text
(2)獲取文獻的作者:
author = div.find_element_by_class_name(‘c-company__body-author).text
(3)獲取文獻的摘要:
content = browser.find_element_by_class_name(‘c-card__aritcle).text
(4)聲明一個字典存儲爬取信息信息:
data_dict = {}
data_dict [‘作者] = author
data_dict[‘題名] = name
data_dict[‘摘要] = content
data_dict[‘關鍵字] = key_worlds
data_dict[‘來源] = source
data_dict[‘發表時間] = datetime
(5)將獲得的所有存儲到列表當中:
data_list.append(data)
2.5 ?將信息存入Excel文件
待信息收集完畢之后,將列表信息中文章的題目、作者、摘要、關鍵字、來源及發表時間等信息批量寫入到Excel文件當中。具體步驟是:
(1)調用open()方法,已寫入方式將信息寫入到data.cvs文件當中:
with open(‘data.csv, ‘w, encoding=utf-8, newline=) as f:
(2)聲明writer對象:
writer = csv.DictWriter(f, title)
(3)批量寫入數據:
writer.writerows(data_list)
2.6 ?爬取信息展示
使用本文方法爬取的部分文獻信息如圖2所示。
3 ?結 ?論
21世紀被譽為“知識爆炸”的時代,近百年來,人類創造的知識,特別是自然科學的知識,在短時期里以極高的速度增長起來,逐步改善著我們生活、學習的環境,越來越多的人投入到科學研究當中。科技文獻檢索伴隨整個科研的生命周期,一個好的科研項目從科研項目的申請、立項、方案的設計、試驗研究、數據的收集與分析到論文的撰寫都離不開科技文獻檢索的支持。隨著人才的不斷增長,科技文獻的數量急劇增加,如何從大量繁雜的文獻中快速準確地查找到所需文獻,成為現代人需具備的一項技能[10],能否熟練運用現代科技文獻檢索技能高效準確的獲取科研信息已成為科研成敗的關鍵。
文章主要介紹了如何使用Python + Selenium + Chrome Driver瀏覽器爬蟲對知網相關文獻進行智能檢索,并將爬取到的題目、作者、摘要、關鍵字、來源、發表時間等信息保存到Excel表當中,方便科研人員查詢。這種瀏覽器爬蟲可以按需自動下載相關文獻基礎信息,告別老式手工文件檢索方式,大大提高了科研人員科技文獻檢索的效率,為今后科研工作取得成功打下了堅實的基礎。
參考文獻:
[1] 韓玲.科技文獻檢索在科研選題中的重要作用 [J].江蘇科技信息,2019,36(33):11-13.
[2] 李剛.瘋狂Python講義 [M].北京:電子工業出版社,2018.
[3] 蔣程燕,孟令琴.基于Python語言的自動化測試應用實例 [J].工業控制計算機,2021,34(10):109-110+113.
[4] 羊昌燕,鄧印凱.基于Selenium的自動化測試框架設計 [J].信息技術與信息化,2021(10):65-68.
[5] 夏克付,章曉勤.基于Selenium自動化測試框架的數據驅動技術研究及應用 [J].齊齊哈爾大學學報(自然科學版),2019,35(6):18-22.
[6] 蟲師.Selenium3自動化測試實戰——基于Python語言 [M].北京:電子工業出版社,2019.
[7] 孫瑜.基于Scrapy框架的網絡爬蟲系統的設計與實現 [D].北京:北京交通大學,2019.
[8] 單艷,張帆.基于Python的網頁信息爬取技術研究 [J].電子技術與軟件工程,2021(14):238-239.
[9] 樊濤,趙征,劉敏娟.基于Selenium的網絡爬蟲分析與實現 [J].電腦編程技巧與維護,2019(9):155-156+170.
[10] 岳金鑫.論科技文獻檢索課程對本科生的必要性 [J].文化產業,2021(28):105-107.
作者簡介:龍學磊(1982—),男,漢族,河北秦皇島人,高級工程師,本科,研究方向:數據分析。