摘" 要:爬蟲技術是搜索引擎和信息網(wǎng)站獲取數(shù)據(jù)的核心技術之一,專用的網(wǎng)絡爬蟲能夠在短時間內(nèi)從網(wǎng)絡上抓取大量有用數(shù)據(jù)?;跒檠芯空咛峁┧鑼W術資源的目的,研究了爬蟲技術在爬取學術網(wǎng)站論文數(shù)據(jù)中的應用。分析了Python爬蟲技術在學術聚合系統(tǒng)中的應用,借助大數(shù)據(jù)技術手段對所爬取的學術數(shù)據(jù)進行存儲、清洗、聚合、消歧和融合。Python爬蟲技術在學術聚合系統(tǒng)中起著關鍵作用,助力研發(fā)人員構(gòu)建強大的數(shù)據(jù)聚合和分析平臺,為學術研究人員提供有價值的信息資源,對學術研究、文獻檢索和信息發(fā)現(xiàn)都具有重要意義。
關鍵詞:Python爬蟲;學術資源;大數(shù)據(jù)技術;學術聚合系統(tǒng)
中圖分類號:TP311.5;TP312" 文獻標識碼:A" 文章編號:2096-4706(2024)10-0068-07
The Application of Python Crawler Technology in Academic Aggregation Systems
CUI Mengyin1, DENG Yin1, LIU Manyi2
(1.Guangdong University of Science and Technology, Dongguan" 523083, China;
2.Shenzhen Huanxuntong Technology Co., Ltd., Shenzhen" 518000, China)
Abstract: Crawler technology is one of the core technologies for search engines and information websites to obtain data. Specialized web crawlers can quickly crawl a large amount of useful data from the network. In order to meet the needs of researchers crawling academic paper data on academic websites to obtain academic resources, the application of Python crawler technology in academic aggregation systems is studied. With the help of big data technology, the crawled academic data is stored, cleaned, aggregated, disambiguated, and fused. Python crawler technology plays a crucial role in academic aggregation systems, helping developers build powerful data aggregation and analysis platforms, providing valuable information resources for academic researchers, and is of great significance for academic research, literature retrieval, and information discovery.
Keywords: Python crawler; academic resource; big data technology; academic aggregation system
0" 引" 言
在信息時代,網(wǎng)絡上的數(shù)據(jù)量不斷膨脹,成千上萬的學術資源散布在各種學術網(wǎng)站之間,為學術研究人員提供了豐富的知識和信息[1]。對于研究人員而言,獲取并利用這些學術資源是其工作不可或缺的一部分。然而,這個龐大的信息海洋也帶來了一個挑戰(zhàn):如何高效地獲取和利用這些寶貴的學術資源。爬蟲技術,作為搜索引擎和信息網(wǎng)站的核心技術之一,能夠在極短的時間內(nèi)從網(wǎng)絡上抓取大量有用的數(shù)據(jù),為解決這一挑戰(zhàn)提供了強大的工具。
早期的搜索引擎如Google、Bing等,以及爬蟲工具如Nutch和Scrapy等,為了建立互聯(lián)網(wǎng)上的索引和提供搜索服務,開發(fā)了強大的爬蟲技術[2]。這些技術用于從網(wǎng)頁上抓取信息并構(gòu)建搜索引擎的數(shù)據(jù)庫。一些學術搜索引擎如Google Scholar、Microsoft Academic等專注于學術領域,提供了學術文獻的搜索和檢索功能。它們通過爬蟲技術從學術網(wǎng)站和期刊中收集學術論文和研究成果。已經(jīng)建立了許多學術數(shù)據(jù)庫和索引,例如PubMed、IEEE Xplore、Web of Science等。這些數(shù)據(jù)庫提供了廣泛的學術文獻和研究成果,但它們的數(shù)據(jù)通常是有結(jié)構(gòu)的,可以通過API進行訪問。開發(fā)了許多文獻管理工具,如EndNote、Mendeley、Zotero等,用于幫助研究人員組織和管理他們的文獻資源[3]。這些工具通常包括文獻導入、引用管理和文獻搜索功能。在學術數(shù)據(jù)處理方面,已經(jīng)有一些工具和技術用于清洗、聚合和消歧學術數(shù)據(jù)。這些工具有助于提高數(shù)據(jù)的質(zhì)量和可用性。學術資源聚合和爬蟲技術方面已經(jīng)取得了重要的進展。然而,新的挑戰(zhàn)和機會不斷涌現(xiàn),因此,不斷改進和創(chuàng)新這些技術和工具仍然是學術領域的一個重要任務。
Python爬蟲技術在學術聚合系統(tǒng)中的應用,介紹Python網(wǎng)絡爬蟲技術的基本原理和關鍵技術,研究了學術聚合系統(tǒng)的設計和實現(xiàn),包括網(wǎng)絡爬蟲技術、大數(shù)據(jù)處理工具,以及數(shù)據(jù)清洗、消歧和融合的關鍵步驟。這一綜合性的研究對于構(gòu)建強大的學術聚合系統(tǒng),為學術研究提供有價值的信息資源,具有重要的意義。
1" 相關技術
1.1" Python網(wǎng)絡爬蟲
Python是一個非常受歡迎的編程語言,因其簡單易學、擁有豐富的庫和框架,而成為網(wǎng)絡爬蟲的首選語言之一。Python的Requests庫通常用于發(fā)起HTTP請求,而Beautiful Soup和lxml等庫用于解析和處理網(wǎng)頁內(nèi)容[4]。Python網(wǎng)絡爬蟲是一種自動化獲取網(wǎng)頁信息的程序。它通過模擬用戶瀏覽網(wǎng)頁的行為,從網(wǎng)站上抓取所需的數(shù)據(jù),并將其保存到本地或數(shù)據(jù)庫中。Python網(wǎng)絡爬蟲廣泛應用于搜索引擎、數(shù)據(jù)挖掘、輿情分析等領域。
1.2" 網(wǎng)絡爬蟲的原理
網(wǎng)絡爬蟲的第一步是獲取要爬取網(wǎng)頁的鏈接,如何獲取這些鏈接一般有三種方式:
1)通過站點地圖(sitemap)獲取鏈接。
2)爬取站點的索引頁獲取鏈接。
3)跟隨鏈接。爬蟲通常會在解析過程中發(fā)現(xiàn)其他鏈接,這些鏈接指向其他頁面。爬蟲會遞歸地跟隨這些鏈接,以獲取更多頁面的內(nèi)容。這種遞歸過程被稱為爬取深度優(yōu)先搜索(DFS)或廣度優(yōu)先搜索(BFS),取決于策略。停止條件可以是達到預定的爬取深度、訪問特定數(shù)量的頁面、或滿足某些特定條件。
面對成千上萬的爬蟲任務時,通過會把落地頁鏈接存放在Redis中,這樣做的好處主要是爬蟲程序一旦中斷或爬取失敗時無須再次從頭爬取,從中斷處爬取即可。網(wǎng)絡爬蟲的工作流程如下:
1)發(fā)起HTTP請求。爬蟲程序首先從Redis緩存中獲取一個或多個URL,然后向這些URL發(fā)起HTTP請求。這些請求可以是HTTP GET請求,用于獲取頁面內(nèi)容,或者是HTTP POST請求,用于提交表單數(shù)據(jù)等。
2)獲取響應。爬蟲接收到目標網(wǎng)站的HTTP響應,這個響應包含了頁面的內(nèi)容和其他相關信息。響應通常包括HTTP狀態(tài)碼、響應頭和響應體(HTML內(nèi)容)。
3)提取數(shù)據(jù)。爬蟲使用解析后的HTML頁面來定位和提取感興趣的數(shù)據(jù)。這可以包括文本、鏈接、圖像、表格等各種類型的信息。數(shù)據(jù)提取通常依賴于HTML文檔的結(jié)構(gòu)和標簽。
4)存儲數(shù)據(jù)。爬蟲將提取的數(shù)據(jù)存儲在本地文件或數(shù)據(jù)庫中,以備后續(xù)使用。數(shù)據(jù)存儲的方式取決于爬蟲的設計和需求。
5)處理異常和錯誤。在執(zhí)行過程中,爬蟲可能會遇到各種異常和錯誤,例如網(wǎng)絡連接問題、網(wǎng)站反爬蟲措施、頁面不存在等。爬蟲需要具備處理這些情況的能力,可以重新嘗試、記錄錯誤或采取其他措施。
需要注意的是,合法的網(wǎng)絡爬蟲必須遵守網(wǎng)站的使用政策和robots.txt文件中定義的規(guī)則。robots.txt文件告訴爬蟲哪些頁面可以訪問,哪些不可以,以及爬取速度限制等。
1.3" 網(wǎng)絡反爬技術
在相關網(wǎng)絡爬蟲技術發(fā)展的同時,反爬蟲技術也在不斷發(fā)展[5],目前反爬蟲技術主要使用以下基本策略:
1)User-Agent控制請求。網(wǎng)站服務器可以檢查HTTP請求的User-Agent標頭,以識別爬蟲請求。爬蟲可以偽裝自己的User-Agent標頭,使其看起來像普通瀏覽器的請求。這可以通過在HTTP請求中設置合適的User-Agent標頭來實現(xiàn)。
2)IP限制。網(wǎng)站可以根據(jù)IP地址封鎖或限制請求。使用代理服務器可以輪流更改爬蟲的IP地址,以避免被封鎖。代理服務器可以提供多個IP地址,爬蟲可以在不同的請求中使用不同的IP地址。
3)Session訪問控制。Session是用戶請求服務器的憑證,在服務器端根據(jù)短時間內(nèi)的訪問量來判斷是否為網(wǎng)絡爬蟲,將疑似網(wǎng)絡爬蟲的Session禁用。通過網(wǎng)絡爬蟲技術可以注冊多個賬號,使用多個Session輪流對服務器進行訪問,避免Session被禁用。
4)驗證碼。一些網(wǎng)站要求用戶在訪問之前輸入驗證碼,以驗證其身份。爬蟲可以使用OCR(光學字符識別)技術來自動解析驗證碼,盡管這可能需要更復雜的實現(xiàn)。另外,可以考慮手動輸入驗證碼或使用可視化自動化工具(如Selenium)來模擬用戶輸入驗證碼。
5)動態(tài)加載。一些網(wǎng)站使用JavaScript動態(tài)生成頁面內(nèi)容,這對傳統(tǒng)爬蟲來說是一個挑戰(zhàn)。使用支持JavaScript渲染的爬蟲工具(如Selenium、Puppeteer)來加載和解析頁面[6]。這些工具可以模擬瀏覽器行為,獲取動態(tài)生成的內(nèi)容。
6)人工智能檢測。高級反爬蟲系統(tǒng)可能使用機器學習和人工智能技術來檢測爬蟲行為。這是一個更復雜的問題,通常需要不斷調(diào)整爬蟲的行為以規(guī)避檢測。爬蟲開發(fā)者可能需要隨機化請求間隔、模仿人類瀏覽行為,并采取其他措施來減少檢測風險。
1.4" 大數(shù)據(jù)處理技術應用
大數(shù)據(jù)處理技術為網(wǎng)絡爬蟲提供了強大的工具和平臺,用于高效處理、分析和存儲大規(guī)模數(shù)據(jù),以支持各種數(shù)據(jù)驅(qū)動的任務和應用[7]。開發(fā)一個用于生產(chǎn)環(huán)境的網(wǎng)絡爬蟲時,一個不容忽視的問題是如何處理和存儲原始網(wǎng)頁數(shù)據(jù)。在一些簡單的使用情況下往往會忽略這個問題。例如,當用戶只需要獲取某個網(wǎng)站的數(shù)據(jù)并達到某個數(shù)量時,如果在處理某個特殊頁面時發(fā)生錯誤,直接跳過也是可以接受的。然而,一旦用戶對數(shù)據(jù)質(zhì)量提出更高要求,就需要考慮更為嚴格和完備的技術方案。在這些情況下,存儲和管理原始數(shù)據(jù)成為不可或缺的一部分。
保存原始數(shù)據(jù)是提高數(shù)據(jù)質(zhì)量的前提,其一,保存原始數(shù)據(jù)可以在網(wǎng)站改版的時候,保證數(shù)據(jù)不丟失,只要修改抽取規(guī)則,對原始網(wǎng)頁重新處理即可;其二,原始數(shù)據(jù)是網(wǎng)頁信息抽取模塊的輸入,原始數(shù)據(jù)可以讓研發(fā)迭代信息抽取算法,優(yōu)化用戶使用體驗。
HBase是一個適用于大規(guī)模數(shù)據(jù)的高性能、高可用性、高擴展性的分布式NoSQL數(shù)據(jù)庫[8]。它適用于多種用例,包括時間序列數(shù)據(jù)存儲、實時分析、監(jiān)控、日志處理和大規(guī)模數(shù)據(jù)存儲等。在構(gòu)建大數(shù)據(jù)應用程序時,HBase常常是一個有力的數(shù)據(jù)存儲和檢索解決方案。學術聚合系統(tǒng)涉及數(shù)百個學術站點的爬取,爬取的網(wǎng)頁達到10余億個,因此選用Hbase作為網(wǎng)頁庫用于保存原始網(wǎng)頁數(shù)據(jù),其中使用URL的md5值作為Rowkey,網(wǎng)頁內(nèi)容作為值存放在列族中的列中。
PySpark是Spark的Python API,它提供了在Python中使用Spark分布式計算引擎進行大規(guī)模數(shù)據(jù)處理和分析的功能[9]。通過PySpark,可以利用Spark的分布式計算能力處理和分析海量數(shù)據(jù)集。PySpark支持各種數(shù)據(jù)源的讀取,如文本文件、CSV、JSON、Parquet等。它還支持Spark SQL、流式計算、機器學習等庫。本研究使用PySpark作為學術網(wǎng)頁信息抽取、學術核心庫數(shù)據(jù)構(gòu)建以及數(shù)據(jù)消歧。
2" 學術聚合系統(tǒng)架構(gòu)設計
學術聚合系統(tǒng)是一個較為復雜的信息處理系統(tǒng),旨在從各種學術資源源源不斷地獲取、處理和提供學術信息。整體架構(gòu)如圖1所示,主要包括數(shù)據(jù)采集、數(shù)據(jù)清洗、數(shù)據(jù)消歧和數(shù)據(jù)質(zhì)量評測模塊。
2.1" 數(shù)據(jù)采集
數(shù)據(jù)源來自兩部分,一是網(wǎng)絡爬蟲程序,用于收集各個學術站點的網(wǎng)頁信息,將這些網(wǎng)頁信息存儲在HBase中。另一部分是離線文件,其中部分學術站點提供了元數(shù)據(jù)的離線下載地址,下載后經(jīng)過清洗可以用于豐富學術核心庫。
2.2" 數(shù)據(jù)清洗
使用PySpark對采集到的網(wǎng)頁數(shù)據(jù)和離線文件進行清洗,將它們轉(zhuǎn)換為具有標準結(jié)構(gòu)的數(shù)據(jù)(schema格式)。隨后,這些清洗后的數(shù)據(jù)會被存儲到學術核心庫中,其中會有兩份副本,一份存儲在HDFS上用于后續(xù)的數(shù)據(jù)消歧,另一份存儲在Elasticsearch(ES)中主要用于問題定位和案例修復。
2.3" 數(shù)據(jù)消歧
此階段主要任務是將來自多個不同來源的數(shù)據(jù)融合在一起,以提高數(shù)據(jù)的完整性和質(zhì)量。這有助于確保數(shù)據(jù)的一致性和準確性。
2.4" 數(shù)據(jù)質(zhì)量評測
數(shù)據(jù)質(zhì)量評測是一個關鍵的環(huán)節(jié),通過對學術數(shù)據(jù)的質(zhì)量差異進行評估,可以幫助識別數(shù)據(jù)質(zhì)量問題,驗證研究結(jié)果的可重復性,以及監(jiān)測學術數(shù)據(jù)的變化。只有通過質(zhì)量評測的數(shù)據(jù)才能被認為合格,并被允許上線使用。
這個流程的主要目標是確保從不同來源獲取的數(shù)據(jù)經(jīng)過清洗和消歧之后,具備高質(zhì)量、一致性和可用性,以滿足學術研究的需求。
3" 學術聚合系統(tǒng)實現(xiàn)
3.1" 編程環(huán)境
在Windows 11操作系統(tǒng)下設置開發(fā)環(huán)境,使用Miniconda作為包管理器,并安裝了Python 3.9.16環(huán)境。選擇PyCharm Community版本作為集成開發(fā)環(huán)境(IDE)。在PyCharm中,創(chuàng)建項目,并成功安裝了重要的Python依賴包,包括Requests、lxml和PySpark,如圖2所示。這些依賴包的安裝是為支持項目和開發(fā)工作。最終,建立了一個功能齊全的開發(fā)環(huán)境,可以開始進行Python編程和相關項目的開發(fā)。
3.2" 學術站點數(shù)據(jù)爬取
3.2.1" 獲取網(wǎng)站信息
要爬取整個學術網(wǎng)站,首先需要獲取網(wǎng)站的所有落地頁鏈接。以“semantic”為例,獲取全站鏈接的步驟為:
首先,在瀏覽器的地址欄中輸入學術網(wǎng)站的根域名,然后在后面加上“/robots.txt”,以查看網(wǎng)站的robots.txt文件。這個文件包含了網(wǎng)站允許爬蟲訪問的鏈接信息,如圖3所示。在robots.txt文件中,你可以找到網(wǎng)站提供的不同類型鏈接,如作者、論文和主題相關的鏈接。這可以幫助你了解網(wǎng)站的結(jié)構(gòu)和可以訪問的內(nèi)容。
其次,你可以打開論文相關的鏈接,如圖4所示。通常每個鏈接中都包含大量論文的落地頁鏈接。這些鏈接大概包含3萬篇論文的鏈接地址,如圖5所示。
最后,一旦獲得了這些鏈接,就可以開始編寫爬蟲程序,以獲取網(wǎng)頁內(nèi)容或接口數(shù)據(jù),進一步處理和分析這些數(shù)據(jù)。
這些鏈接的獲取是爬取學術網(wǎng)站數(shù)據(jù)的關鍵步驟,它們提供了訪問網(wǎng)站內(nèi)容的入口點。有了這些鏈接,就可以有選擇地獲取特定類型的數(shù)據(jù),如論文信息、作者信息等。
3.2.2" 網(wǎng)站爬取的代碼實現(xiàn)
使用Python語言爬取學術網(wǎng)站(Semantic Scholar)的網(wǎng)站地圖(Sitemap)上的鏈接,并將這些鏈接保存到名為“semantic_url.txt”的文本文件中。導入Requests庫,用于發(fā)送HTTP請求和獲取網(wǎng)頁內(nèi)容。導入re庫,用于正則表達式匹配。定義要訪問的學術網(wǎng)站地圖的URL,這個URL包含了一系列論文的鏈接。使用Requests庫發(fā)送GET請求來獲取指定URL的網(wǎng)頁內(nèi)容,并將響應存儲在resp變量中。使用正則表達式(lt;locgt;(.*?)lt;/locgt;)從響應文本中提取包含在lt;locgt;標簽內(nèi)的鏈接。這將創(chuàng)建一個包含所有鏈接的列表links。打開一個名為“semantic_url.txt”的文本文件以供寫入,如果文件不存在則創(chuàng)建它。mode=‘a(chǎn)'表示以追加模式打開文件,這意味著如果文件已經(jīng)存在,新的鏈接將追加到文件末尾。迭代處理從網(wǎng)頁中提取的鏈接列表。將每個鏈接寫入到文本文件中,每個鏈接之間用換行符分隔,以便每個鏈接占據(jù)一行。網(wǎng)站爬取的代碼實現(xiàn)如下所示:
import requests
import re
url =“https://www.semanticscholar.org/sitemap-paper-0000000.xml”
resp = requests.get(url)
links = re.findall(‘lt;locgt;(.*?)lt;/locgt;', resp.text)
with open(‘./data/semantic_url.txt', mode=‘a(chǎn)', encoding=‘utf-8') as f:
for link in links:
f.write(link + “\n”)
3.2.3" 學術系統(tǒng)爬蟲架構(gòu)
如圖6所示,學術系統(tǒng)爬蟲架構(gòu)中,一旦獲取到學術落地頁鏈接,這些鏈接將被存儲在一個名為Redis集合的數(shù)據(jù)結(jié)構(gòu)中。這里的Redis是一個高性能內(nèi)存數(shù)據(jù)庫,用于存儲這些鏈接。爬蟲程序自動從Redis集合中領取爬取任務,這些任務包括要爬取的網(wǎng)頁鏈接。爬取程序會嘗試訪問這些鏈接,如果爬取成功,它會將網(wǎng)頁信息存儲在Hbase網(wǎng)頁庫中,以供后續(xù)的處理和分析。如果爬取失敗,爬蟲程序會自動將失敗的URL重新放回到Redis中,等待下次重新嘗試爬取。這個架構(gòu)允許爬蟲系統(tǒng)高效地管理爬取任務,確保盡可能多的頁面被成功抓取,并具有自動重試機制以處理爬取失敗的情況。這有助于保持數(shù)據(jù)的完整性和質(zhì)量。
3.3" 數(shù)據(jù)清洗
在對學術網(wǎng)頁或離線數(shù)據(jù)進行清洗之前,首先需要定義學術數(shù)據(jù)的結(jié)構(gòu),這就是所謂的schema,即數(shù)據(jù)的結(jié)構(gòu)和組織方式[10]。這個schema應該明確定義了不同類型的學術數(shù)據(jù),包括期刊、會議、學位論文、專利和報告等,如表1所示。這個schema描述了數(shù)據(jù)包括的字段,以及字段的數(shù)據(jù)類型和結(jié)構(gòu)。
在數(shù)據(jù)清洗過程中,將原始學術數(shù)據(jù)按照預定義的schema(數(shù)據(jù)結(jié)構(gòu))進行整理。每一篇學術文章都會被處理成一條JSON格式的數(shù)據(jù)記錄。需要特別注意的是,一些字段可能包含復雜的結(jié)構(gòu),但將按照數(shù)據(jù)樣例的實際情況來清洗這些數(shù)據(jù)。清洗的結(jié)果應該符合定義的數(shù)據(jù)結(jié)構(gòu),以確保數(shù)據(jù)的一致性和可用性??梢宰寯?shù)據(jù)更容易存儲、分析和應用。
使用Pyspark進行數(shù)據(jù)清洗,關鍵代碼下所示:
class BaseProcess:
@staticmethod
def process(html_data):
url = html_data[\"url\"]
content = html_data[\"html\"]
data = {}
data[\"url\"] = url
BaseProcess.gen_id(data)
obj = etree.HTML(content)
BaseProcess.extract_title(obj, xpath_dict.get(\"title\"), data)
BaseProcess.extract_summary(obj, xpath_dict.get(\"summary\"), data)
BaseProcess.extract_author(obj, xpath_dict.get(\"author\"), data)
BaseProcess.extract_citations(obj, xpath_dict.get(\"citations\"), data)
BaseProcess.extract_periodical(obj, periodical_dict, data)
BaseProcess.extract_doi(obj, xpath_dict.get(\"doi\"), data)
BaseProcess.extract_downloadLink(obj, xpath_dict.get(\"downloadLink\"), data)
BaseProcess.extract_issn(obj, xpath_dict.get(\"issn\"), data)
BaseProcess.extract_year(obj, xpath_dict.get(\"year\"), data)
BaseProcess.extract_keywords(obj, xpath_dict.get(\"keywords\"), data)
return data
if __name__ == '__main__':
current_date = time.strftime(\"%Y%m%d\")
print(current_date)
sc = SparkContext(appName=\"academic\")
input_hdfs = \"/data/html_data_20231003\"
save_hdfs = f\"/data/academic_data_{current_date}\"
sc.textFile(input_hdfs).map(json.loads).map(BaseProcess.process).map(json.dumps).saveAsTextFile(save_hdfs)
經(jīng)過清洗的數(shù)據(jù)示例如下所示:
{
\"url\": \"https://link.springer.com/article/10.1007/s40544-022-0726-2\",
\"id\": \"f6a3a5d2e8bfb2d1ce47d3851c0cba75\",
\"title\": \"Achieving near-infrared-light-mediated switchable friction regulation on MXene-based double network hydrogels\",
\"summary\": \"MXene possesses great potential in enriching the functionalities of hydrogels due to its unique metallic conductivity…...\",
\"author\": [
{
\"name\": \"Pengxi Wu\"
},
{
\"name\": \"Cheng Zeng\"
},
{
\"name\": \"Jinglun Guo\"
},
{
\"name\": \"Guoqiang Liu\"
},
{
\"name\": \"Feng Zhou\"
},
{
\"name\": \"Weimin Liu\"
}
],
\"citations\": 2,
\"periodical\": {
\"name\": \"Friction\",
\"volume\": \"12\",
\"issue\": \"1\",
\"pages\": \"39-51\",
\"year\": 2023
},
\"doi\": \"10.1007/s40544-022-0726-2\",
\"downloadLink\": [
\"https://link.springer.com/content/pdf/10.1007/s40544-022-0726-2.pdf\"
],
\"issn\": \"2223-7704\",
\"year\": 2023,
\"keywords\": [
\"Mechanical Engineering\",
\"Nanotechnology\",
\"Tribology, Corrosion and Coatings\",
\"Physical Chemistry\",
\"Surfaces and Interfaces, Thin Films\"
]
}
3.4 數(shù)據(jù)消歧和融合
學術論文數(shù)據(jù)來自各個站點,每個站點的數(shù)據(jù)質(zhì)量參差不齊,如何從多源數(shù)據(jù)提煉出高質(zhì)量的數(shù)據(jù)供用戶檢索使用是聚合系統(tǒng)的核心。而數(shù)據(jù)消歧是一種有效的解決辦法,數(shù)據(jù)消歧在搜索引擎的數(shù)據(jù)開發(fā)中具有重要的作用,它有助于提高搜索結(jié)果的準確性、提高搜索效率、提供一致的用戶體驗、降低數(shù)據(jù)誤解的風險,并支持數(shù)據(jù)的可信度和個性化推薦。這是搜索引擎提供高質(zhì)量信息檢索服務的關鍵環(huán)節(jié)之一。文本采用的消歧策略如圖7所示。如果兩篇文章的標題不同,那么它們可以被確定為不同的文章,不需要進行消歧處理。但是,當兩篇文章的標題相同時,當兩篇文章的標題相同時需要進一步判斷是否滿足消歧條件,用于區(qū)分相同標題的不同文章,以確保數(shù)據(jù)的準確性和唯一性。
具體步驟如下:
1)使用PySpark從HDFS中讀取學術數(shù)據(jù),并將其加載為JSON格式的數(shù)據(jù)。
2)使用文章標題作為關鍵字段進行數(shù)據(jù)聚合。如果有相同標題的文章,需要進一步判斷它們是否是同一篇文章。如果是同一篇文章,將它們合并為一篇新的文章,繼續(xù)聚合。
3)重復步驟2),一直持續(xù)聚合,直到所有文章都被正確聚合。
4)此時,不同來源的相同文章已經(jīng)聚合在一起。接下來,需要從多源數(shù)據(jù)中選擇最終的數(shù)據(jù),這個過程被稱為數(shù)據(jù)融合。融合的策略是基于站點的權重和投票來確定最終數(shù)據(jù)。
5)融合后的待發(fā)布數(shù)據(jù)將被保存到HDFS和Elasticsearch(ES)中,各有一份副本。
6)對待發(fā)布數(shù)據(jù)進行質(zhì)量評測。只有通過質(zhì)量評測的數(shù)據(jù)才能夠上線使用,以確保數(shù)據(jù)的準確性和可用性。
4" 結(jié)" 論
在研究中,探討了Python爬蟲技術在學術聚合系統(tǒng)中的應用,旨在提供研究者便捷的學術資源獲取途徑。爬蟲技術作為搜索引擎和信息網(wǎng)站數(shù)據(jù)獲取的核心技術之一,為構(gòu)建這一系統(tǒng)提供了強有力的工具。通過專用的網(wǎng)絡爬蟲,能夠高效地從學術網(wǎng)站上抓取大量有用的學術數(shù)據(jù),為學術研究提供了寶貴的信息資源。在研究中,不僅實現(xiàn)了數(shù)據(jù)的高效抓取,還利用大數(shù)據(jù)技術手段對爬取的學術數(shù)據(jù)進行了清洗、聚合和消歧。這些步驟不僅有助于提高數(shù)據(jù)質(zhì)量,還確保了數(shù)據(jù)的一致性和可用性。
參考文獻:
[1] 巫偉峰,張群英.基于互聯(lián)網(wǎng)學術搜索引擎分析國內(nèi)樹莓研究現(xiàn)狀——以“百度學術”為例 [J].安徽農(nóng)學通報,2019,25(14):50-52.
[2] 聶莉娟,方志偉,李瑞霞.基于Scrapy框架的網(wǎng)絡爬蟲抓取實現(xiàn) [J].軟件,2022,43(11):18-20.
[3] 文獻管理工具——Zotero簡介 [J].華西口腔醫(yī)學雜志,2022,40(5):609.
[4] 楊健,陳偉.基于Python的三種網(wǎng)絡爬蟲技術研究 [J].軟件工程,2023,26(2):24-27+19.
[5] 郭晉豫.基于Spark Streaming的反爬蟲系統(tǒng)的設計與實現(xiàn) [D].西安:西安電子科技大學,2021.
[6] 時春波,李衛(wèi)東,秦丹陽,等.Python環(huán)境下利用Selenium與JavaScript逆向技術爬蟲研究 [J].河南科技,2022,41(10):20-23.
[7] 郎為民,李宇鴿,田尚保,等.大數(shù)據(jù)處理技術研究 [J].電信快報,2022(4):1-6+12.
[8] 曹麗蓉.基于HBase數(shù)據(jù)庫的數(shù)據(jù)分布式存儲方法 [J].蘭州工業(yè)學院學報,2022,29(5):46-50.
[9] 姜慶玲,張樊.基于Python和Requests快速獲取網(wǎng)頁數(shù)據(jù)的方法研究 [J].現(xiàn)代信息科技,2023,7(16):100-103+108.
[10] 李琳,董博,鄭玉巧.大型風力機異常功率數(shù)據(jù)清洗方法 [J].蘭州理工大學學報,2022,48(3):65-70.
作者簡介:崔夢銀(1993.05—),女,漢族,河南商丘人,教師,碩士,研究方向:數(shù)據(jù)分析與數(shù)據(jù)挖掘;鄧茵(2002.11—),女,漢族,廣東廉江人,本科在讀,研究方向:數(shù)據(jù)挖掘與分析;劉滿意(1992.04—),男,漢族,河南商丘人,軟件工程師,碩士,研究方向:數(shù)據(jù)分析與數(shù)據(jù)挖掘。