[摘 要]以核工業(yè)西南物理研究院圖書館的學術新聞信息采集工作為例,介紹了PyCharm軟件、requests庫和lxml庫的使用方法及爬蟲技術的使用步驟,列舉3個具有參考性的新聞信息采集應用案例,旨在方便科研人員全面且及時地掌握信息。
[關鍵詞]爬蟲 科技圖書館 圖書館信息 信息服務 信息采集
[分類號]G250.73
互聯網的發(fā)展拓寬了圖書館的館藏類型,使得其采集對象從紙質印刷文獻載體擴展到網絡信息資源(即通過互聯網發(fā)布、傳遞和儲存的文獻信息資源的綜合,也稱網絡文獻[1]),網絡學術新聞信息則指的是發(fā)布在互聯網上具有學術研究參考價值的信息資源,對科研單位科技圖書館的讀者具有重要意義。該類讀者與高校圖書館和公共圖書館的讀者有所不同,科研單位的讀者以科研人員為主,對某一研究領域的最新研發(fā)動態(tài)和科研進展都有更大的需求。因此,科技圖書館應開展網絡學術新聞信息的采集工作,為讀者采集有關最新科研進展動態(tài)的學術新聞,從而方便后期為其提供便捷的學術新聞信息服務。
不同研究領域的讀者往往具有不同的網絡學術新聞信息需求。核工業(yè)西南物理研究院(以下簡稱“核西物院”)圖書館的采集工作主要服務于核西物院的科研人員,因此采集的對象主要是核聚變(以下簡稱“聚變”)相關的學術新聞信息。由于互聯網資源更新速度快且與聚變研究相關的網頁數量大,人工手動在幾十個聚變研究機構的官網和綜合新聞網站上采集新聞費時費力,且容易出現關鍵新聞信息錯漏的問題。利用網絡爬蟲技術可快速從大量的聚變相關網站上獲取學術新聞信息,網絡爬蟲能夠按照事先編寫好的程序腳本,對目標數據進行批量采集[2]。定期采集大量網頁內容并進行存檔以供人們使用是運用網絡爬蟲的一個重要目的[3]。利用網絡爬蟲技術的自動機器采集代替人工手動采集,不僅能將核西物院圖書館工作人員從重復且機械的工作中解脫出來,還能更及時、全面地實現網絡學術新聞信息的采集,為信息的開發(fā)工作打下基礎。
在以往的研究中,圖書館利用爬蟲技術的采集對象主要有圖書信息[2,4-5]、網絡期刊文獻信息[2,4-6]和慕課免費數字資源信息[7],采集方法主要涉及主題爬蟲法[5-8]、八爪魚爬蟲法[2]和對python的json庫、requests庫和BeautifulSoup4庫的使用[4]。這些方法都不太適用于圖書館的學術新聞信息采集工作。首先,主題爬蟲不夠精準,因為該方法會通過事先設定好的主題詞采集到許多與學術新聞無關的內容。其次,八爪魚爬蟲法不夠靈活,因為爬取新聞時,常會遇到新聞超鏈接不全的問題,而八爪魚爬蟲軟件無法判斷其完整性,也無法自動補全鏈接。最后,Python的BeautifulSoup4庫比起lxml庫的使用方法更復雜,需要程序編寫者自己思考并編寫出爬取目標的路徑代碼,不像lxml庫中的xpath方法那樣可以通過開發(fā)者模式直接復制目標的路徑代碼。
筆者利用Python的requests庫和lxml庫對網絡學術新聞信息進行采集,補充了圖書館使用爬蟲技術的采集對象,并提供了更精確、靈活、簡便的采集方法。Python是一種可以用于網絡爬蟲的程序設計語言,它所提供的第三方庫requests和lxml可以對網頁進行處理。采集人員只需使用程序語言Python3.8,在集成開發(fā)環(huán)境PyCharm中導入requests庫和lxml庫,編寫相應的爬蟲代碼,就能實現對網絡學術新聞信息的采集。
1 科技圖書館采集網絡學術新聞信息的重要意義
1.1 便于圖書館提供信息服務
科研單位科技圖書館的主要服務對象是該單位的科研人員。通常這些讀者能通過期刊類的學術文獻了解各自領域的國內外科研動態(tài)信息,但幾乎每日都會更新的網絡學術新聞不僅相對于紙質信息資源的出版速度更快,而且相對于網絡電子學術期刊(出版周期一般為年刊、季刊、雙月刊、月刊)的發(fā)布頻率更快。因此圖書館可以通過采集網絡學術新聞信息的方式為讀者提供更新的學術信息??萍紙D書館作為科研單位信息資源的匯集地,本身擔負為讀者提供信息服務、滿足讀者信息需求的重要責任。在數字化的背景下,科技圖書館不僅應該提供傳統(tǒng)紙質資源的信息服務,更應開展數字化網絡資源的特色信息服務業(yè)務。采集網絡學術新聞信息是將學術信息及時共享給科研人員的重要基礎和前提,也便于圖書館為其提供后續(xù)信息服務。
1.2 有助于記錄學術信息資源
網絡學術新聞信息能夠反映每個國家或研究機構最新的研究突破和研究進展,具有值得記錄的學術參考價值。如不及時對其進行采集,就會造成學術信息資源的浪費。反之,如果科研單位科技圖書館能及時、全面地采集網絡學術新聞,將有助于記錄科研發(fā)展規(guī)律。網絡信息記錄反映了某一時代的發(fā)展和變化[9],網絡學術信息記錄則能反映某一研究領域的發(fā)展和變化。如果圖書館可以采集每個研究機構官網的新聞發(fā)布日期、新聞標題、新聞內容等,并按照日期對新聞信息進行排列匯總,就能記錄特定周期內特定研究機構的科研發(fā)展規(guī)律,從而為科研人員的選題和研究規(guī)劃提供一定的參考。
2 核西物院圖書館采集網絡學術新聞信息的特殊意義
核西物院是從事聚變能源開發(fā)和研究的專業(yè)科研單位,其下屬圖書館屬于眾多科技圖書館中的一個。核西物院圖書館采集網絡學術新聞信息不僅具有一般科技圖書館采集此類信息的重要信息服務意義和記錄意義,還具有更特殊的意義。這是因為其群體主要由聚變領域的科研人員構成,由于這一科研領域的特殊性,他們往往較難從國內外的相關新聞網站上獲取到有價值的信息。核西物院圖書館采集網絡學術新聞信息有助于解決讀者面臨的特殊問題,從而方便其及時且全面地掌握前沿科研信息,提高獲取此類信息的效率。
2.1 可供讀者及時且全面掌握前沿科研信息
國內缺少專門針對聚變研究的綜合新聞網站,且新聞網站的國際聚變新聞存在更新速度慢、素材不全的問題。目前國內只有匯集了核聚變新聞和核裂變新聞的核電類新聞網站,如中國核電信息網和北極星核電網。這些網站的新聞都來源于對國內核電新聞的轉載和對國際新聞的翻譯。國際新聞的語言特點,使得其發(fā)布程序增加了人工翻譯和校對的過程。此外,可能因為截至目前,真正實現商用的核電站都是核裂變電站,所以這些網站更關注裂變新聞。以上兩個原因導致國際聚變新聞更新較慢、內容不全。以2022年9月中國核電信息網的國際核訊版塊為例,其中國際核電新聞共有79條,而國際聚變新聞僅有兩條,并且這兩條新聞都不能體現聚變研究進展。然而據筆者不完全統(tǒng)計,經篩選后9月較有價值的國際聚變新聞至少有16條。這說明盡管國際聚變新聞本身相對較少,但其真正數量也比目前國內核電類新聞網站發(fā)布得要多。國內這些網站沒有對大部分國際聚變新聞進行收集、翻譯和發(fā)布。
考慮以上因素,聚變領域的讀者很難及時、直接地通過國內的綜合新聞網站較全面地了解聚變相關科研進展。因此圖書館采集聚變相關的網絡學術新聞能夠彌補當前國內對國際聚變新聞匯集的不足,可供讀者及時且全面地掌握相關科研進展。
2.2 提高讀者獲取前沿科研信息的效率
國際聚變相關新聞網站數量過于龐大,導致讀者無法快速篩選出有價值的信息,因此核西物院圖書館采集相關學術新聞信息,有助于為后續(xù)的信息篩選、翻譯、共享工作打下基礎,從而為讀者節(jié)省時間。據《2022年全球聚變行業(yè)》報告不完全統(tǒng)計,全球自1992年起已成立了32家聚變研究機構(除中國外)[10],因此相應存在許多機構官網的新聞版塊(子網站)。其他新聞網站還包括1992年前就已成立的權威聚變研究機構官網的新聞版塊,如英國原子能管理局(1954年)、美國通用原子能公司(1955年)、德國馬克斯·普朗克等離子體物理研究所(1960年)、日本國立核聚變科學研究所(1989年)官網的新聞版塊等。另外還有一些綜合類新聞網站,包括英國國際核工程網(Nuclear Engineering International)、世界核新聞網(World Nuclear News)、國際熱核試驗堆新聞網(ITER Newsline)等。
總之,國際聚變相關新聞網站具有數量龐大的特點,而平常忙于實驗研究、數據模擬、數據分析、設備調試等工作的核西物院讀者,無法將太多時間花費在對不定期更新的海量新聞網站的檢索收集上。因此,圖書館采集上述新聞信息對讀者提高獲取前沿科研信息效率具有重要意義。
3 爬蟲技術的使用方法與步驟
3.1 PyCharm軟件的使用方法
PyCharm是一個專門用于開發(fā)Python程序的集成開發(fā)環(huán)境(編程軟件),具有代碼編輯、代碼分析、語法高亮等功能[11]。爬取新聞信息的第一步是利用該軟件安裝爬蟲需要的requests庫和lxml庫。通過點擊該軟件底部的terminal命令模式、輸入“pip install requests”、回車后輸入“pip install lxml”、再按回車,就能實現兩個庫的安裝。安裝好后即可在該軟件中進行代碼的編寫。使用該軟件的另一目的,是方便圖書館工作人員直接點擊爬取到的新聞超鏈接,從而進行對新聞原網頁的訪問。這是為了解決不利用任何軟件,直接在Windows系統(tǒng)中使用CMD命令提示符打開并運行Python文件時,點擊超鏈接不跳轉的問題。
3.2 requests庫的使用方法
requests庫是Python的第三方庫,主要用于網頁請求和網頁爬蟲。該庫中與爬取聚變新聞信息相關的函數是requests.get(url,headers,verify)函數。其中url用于向對應的新聞網頁服務器發(fā)送請求,作為請求頭的headers用于偽裝成瀏覽器進行網頁訪問,verify則用于避免所爬取的網頁因驗證書錯誤而出現信息報錯問題。雖然信息報錯不會影響爬蟲程序的正常運行,但是,它會在爬取內容中顯示一些警告信息破壞爬取數據的美觀性。通過將verify參數設置成False可以取消驗證,從而使得爬取到的信息更干凈整潔。隨后使用response=requests.get()函數來封裝所請求的聚變新聞網頁源代碼數據,并返回網頁源代碼、保存為response對象。最后通過該庫的text方法將response對象轉化成字符串格式。
3.3 lxml庫的使用方法
lxml庫同樣也是Python的第三方庫,可用于網頁爬蟲,亦可解析HTML文檔,即一種以超文本標記語言提供網頁信息的文檔。該庫中與新聞網頁信息采集相關的函數是html=etree.HTML()。首先通過etree.HTML()將字符串格式的response對象轉化為HTML文檔,從而構造一個xpath可解析的對象,再將其保存為html對象。
xpath是一種能夠在HTML文檔中查找信息的語言,可以對文檔中的元素和屬性進行定位和爬取。其大致操作方法如下:選擇任意一個與聚變研究相關的權威機構官網或綜合新聞網,從中打開聚變研究進展新聞版塊所在的網頁頁面,在Chrome瀏覽器中點擊F12鍵,調出網頁開發(fā)者模式,再使用快捷鍵“Ctrl+shift+c”進入元素選擇模式。值得注意的是,大部分網頁上會羅列多條新聞,而單條新聞的所有信息(包含新聞發(fā)布日期、超鏈接、標題、摘要和圖片等)一般呈現在一個單獨可選中的版塊上。用鼠標選中該版塊,元素頁面上就會自動定位到這些信息所在的路徑,再通過右鍵復制(點擊copy xpath)就可以得到該條新聞信息的xpath路徑(節(jié)點)。通過元素選擇模式點擊前3條新聞信息版塊,會發(fā)現其xpath路徑的共同特點。以美國通用原子公司新聞網頁為例,前3條新聞信息版塊的xpath路徑依次為:
/html/body/div[2]/div/div/div/main/div/div[2]/div/ul/li[1]
/html/body/div[2]/div/div/div/main/div/div[2]/div/ul/li[2]
/html/body/div[2]/div/div/div/main/div/div[2]/div/ul/li[3]
其中方括號里的數字表示的是括號前元素的序號,比如li[2]表示第二個li元素。對比后發(fā)現前3條新聞xpath路徑的唯一區(qū)別是li[]中的數字。將li后的方括號及數字刪除,則會得到一個包含所有新聞信息版塊的路徑。使用html.xpath()函數,將路徑插入圓括號內,就能得到一個包含了每條新聞信息版塊的路徑列表(保存為first_list對象)。利用for first in first_list函數將該列表進行遍歷循環(huán),每次循環(huán)都會從first_list列表中“取得一個元素”(一條新聞版塊的路徑)賦予first,并執(zhí)行一次代碼塊,直到列表中的所有元素都執(zhí)行了代碼塊后結束[11]。同時使用first.xpath()函數來獲取每條新聞的發(fā)布日期、超鏈接及標題等信息。具體實現方式根據網站不同略有差異,可通過text()方法來獲取節(jié)點中所需的文字內容,亦可使用“@”獲取該節(jié)點下的某條屬性內容。最后將匯總到的新聞信息輸出至屏幕。
3.4 爬蟲技術的使用步驟
整個爬蟲步驟大致為:(1)在PyCharm軟件中創(chuàng)建一個新的Python文件,并在該文件中導入requests庫和lxml庫。(2)選擇任意一個與聚變研究相關的權威機構官網或綜合新聞網,從中找到聚變研究進展新聞版塊所在的網頁頁面,從而確定需要爬取的url(網址)。(3)利用用戶代理使服務器能夠識別用戶的操作系統(tǒng)版本、瀏覽器版本、CPU類型等,以便偽裝成瀏覽器進行網頁訪問。(4)通過requests庫中的requests.get()函數獲取新聞網頁(url)源代碼。(5)通過lxml庫的etree.HTML()函數將字符串格式的網頁源代碼轉化成xpath可解析的HTML文檔。(6)確定需爬取的目標信息,如新聞發(fā)布時間、超鏈接和標題。(7)分析目標新聞網頁的網頁源代碼,利用xpath方法定位并復制任意一條新聞信息版塊(包含新聞發(fā)布日期、超鏈接、標題、摘要和圖片等)的xpath路徑。(8)對比2~3條新聞信息版塊的路徑,找到規(guī)律,歸納出能夠包含每條新聞信息版塊的路徑列表。(9)利用xpath()函數爬取該列表。(10)利用for…in函數將該列表進行遍歷循環(huán),并且使用xpath()函數爬取列表中每條新聞的發(fā)布日期、超鏈接及標題等信息。(11)使用print()函數和join()函數輸出干凈、整潔的新聞信息。
4 科技圖書館學術新聞采集案例應用
核西物院科技圖書館利用爬蟲技術采集聚變相關學術新聞信息是為了方便工作人員及時捕捉最新的新聞,從而進行篩選、翻譯或轉載,最終上傳到單位的網站上。該目的決定了爬取目標的范圍應包括新聞發(fā)布日期、超鏈接和標題。爬取新聞發(fā)布日期有利于圖書館工作人員快速判斷新聞的時效性,爬取新聞超鏈接便于工作人員快速訪問新聞原頁面、瀏覽新聞內容,爬取新聞標題則有助于工作人員判斷新聞的相關性與重要性。其他圖書館的工作人員可以按照各自的目的,自行調整爬取目標。
筆者列舉了3個具有參考性的爬蟲應用案例。其中案例一列舉了最典型的新聞信息爬蟲代碼,所有新聞網站的爬蟲代碼都可以此為基礎;案例二和案例三列舉了爬取新聞時的常見問題、解決方案(相應代碼的修改方式)和具體代碼。
4.1 案例一
一些聚變新聞網頁源代碼較標準、易爬取,因而以這類網頁為爬取目標寫出的爬蟲核心代碼也較標準、適用范圍廣。其他新聞網頁的代碼只需在此類代碼上進行靈活修改即可。筆者以網頁源代碼較標準的歐洲聚變能組織(F4E)的新聞網頁作為爬取案例。其核心代碼如下:
import requests #導入request庫
from lxml import etree #導入lxml庫中的etree包
url = \"https://fusionforenergy.europa.eu/news/\" #歐洲聚變能組織的新聞網址
headers = {\"user-agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/99.0.4844.82 Safari/537.36\"}#將爬蟲身份偽裝成瀏覽器的代理
resp = requests.get(url,headers=headers,verify=False) #獲取并返回網頁源代碼
html = etree.HTML(resp.text) #先將網頁源代碼轉化為字符串格式,再轉化為HTML文檔以便使用xpath函數
first_list=html.xpath(′/html/body/div[1]/div[2]/section/ma
in/article/div/div[2]/ul/li/div[2]′) #利用xpath方法得出包含爬取目標的路徑列表
for first in first_list: #使用for…in循環(huán)從列表中依次取值,賦給first
date= first.xpath(\"div[2]/div[1]/text()\") #獲取路徑節(jié)點第二個div節(jié)點下、第一個div節(jié)點下的文本內容(新聞發(fā)布日期)
title = first.xpath(\"a/text()\") #獲取路徑節(jié)點a節(jié)點下的文本內容(新聞標題)
site = first.xpath(\"@href\") #獲取路徑節(jié)點的href屬性內容(新聞超鏈接)
print(\"\".join(date),\"\".join(site),\"\".join(title)) #利用join()函數把獲取的HTML文檔轉換成字符串,以使輸出的新聞發(fā)布日期、超鏈接和標題內容干凈、整潔
resp.close() #爬取完成后關閉與服務器的連接
print(\"over\") #輸出over,以便確定爬取過程結束
筆者2022年10月12日運行程序后,兩秒內完成了爬蟲,爬蟲結果準確率為100%。其中新聞日期的書寫順序是“日、月、年”。爬蟲結果如圖1所示,由于爬取的標題過長,進行了剪裁。
4.2 案例二
爬取新聞網頁信息時遇到的常見問題之一是爬取的超鏈接不全或部分不全,從而阻礙圖書館工作人員對其進行訪問。解決此問題的辦法是:(1)對比爬取的鏈接與原鏈接的區(qū)別,從而確定需補全的url網址。(2)如果爬取的鏈接都不全,則只需在輸出爬取結果時,利用“+”合并所爬取的鏈接和需補全的鏈接,以得到完整的鏈接。(3)如果爬取鏈接只有部分不全,則使用if-else語句來判斷爬取的鏈接中是否含有http,若含有,證明爬取鏈接完整,則直接輸出鏈接;如不含有,說明“條件測試未通過”,則執(zhí)行else的操作,即通過“+”拼接鏈接[12]。
筆者以日本國立聚變科學研究所(NIFS)的新聞網頁為爬取案例,旨在為遇到此類問題的圖書館工作人員提供可參考的解決方法。代碼結構和經典案例大致相同,只需針對鏈接存在的問題進行部分修改。其核心代碼如下:
import requests
from lxml import etree
url_1 = \"https://www.nifs.ac.jp/en/news/index.html\" #日本國立聚變科學研究所新聞版塊的網址
url_2 =\"https://www.nifs.ac.jp/en/news/\" #需補全的鏈接
headers = {\"user-agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/99.0.4844.82 Safari/537.36\"}
resp = requests.get(url_1,headers=headers,verify=False)
html = etree.HTML(resp.text)
first_list=html.xpath(′/html/body/div[1]/div/div[1]/div/div
/section/div[1]/div′)
for first in first_list:
date = first.xpath(\"div/div[2]/div[2]/span/text()\")
site = first.xpath(\"div/div[3]/div/a/@href\")
title= first.xpath(\"div/div[3]/h1/text()\")
if \"http\" in \"\".join(site): #如果鏈接中含有“http”
print(\"\".join(date),\"\".join(site),\"\".join(title))# 直接輸出鏈接
else: #如果鏈接中未含有“http”
print(\"\".join(date),url_2+\"\".join(site),\"\".join(title)) #使用\"+\"合并url_2和site,輸出完整的鏈接
resp.close()
print(\"over\")
筆者2022年10月12日運行程序后,兩秒內完成了爬蟲,爬蟲結果準確率為100%。爬取結果如圖2所示。
4.3 案例三
爬取新聞網頁信息時還會遇到兩個常見問題:(1)新聞信息版塊里沒有新聞發(fā)布日期;(2)無法用同一個規(guī)律總結所有新聞信息版塊所在的xpath路徑。
在兩種情況下可以忽略問題一:第一,如果整個網頁源代碼和新聞網頁上都缺少新聞發(fā)布日期,則無法爬?。坏诙?,如果網頁段代碼里沒有專門的新聞發(fā)布日期,并且新聞發(fā)布日期是超鏈接的一部分,則無需爬取。但是如果在該網頁上的其他版塊能找到新聞發(fā)布日期且只有兩個發(fā)布日期(匯集新聞的起止日期),則需用xpath方法對該版塊上的日期進行爬取,并且輸出利用“+”合并的起始日期、連字符和終止日期,隔時段更新的綜合新聞網站往往會出現該問題。
針對問題二的解決方法是:第一,分析網頁源代碼,找到一條或多條新聞信息所在版塊的xpath路徑(一些網頁的首條新聞往往獨占單獨的版塊且不與其他新聞遵循同一個xpath路徑規(guī)律);第二,分析路徑規(guī)律,針對規(guī)律相同的新聞編寫新的路徑列表;第三,利用xpath()函數爬取所有路徑列表。
綜合新聞網站國際熱核試驗堆新聞網的更新時間不固定,更新內容涵蓋某段起止日期內的一些重要科研機構的新聞。其新聞的xpath路徑遵循3種不同的規(guī)律。由于該網頁存在以上兩個問題,所以筆者以其作為爬取案例。核心代碼如下:
import requests
from lxml import etree
url_1 = \"https://www.iter.org/news/whatsnew\"
url_2 = \"https://www.iter.org\" #需補全的鏈接網址
headers = {\"user-agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/99.0.4844.82 Safari/537.36\"}
resp = requests.get(url_1,headers=headers,verify=False)
html = etree.HTML(resp.text)
date_list=html.xpath(′//*[@id=\"maincontent\"]/div/div/div[1]/blockquote/p′) #新聞起止日期的路徑列表
for date in date_list:
date_start = date.xpath(\"b[1]/text()\") #新聞起始日期
date_end = date.xpath(\"b[2]/text()\") #新聞終止日期
print(\"\".join(date_start),\"-\"+\"\".join(date_end)) #利用“+”合并新聞起始日期、連字符和終止日期
first_list = html.xpath (′//*[@id=\"wn_blocktop\"]/div/div/a′) #新聞路徑列表1
for first in first_list:
site1 = first.xpath(\"@href\")
title1 = first.xpath(\"./div/span/text()\")
print(url_2 + \"\".join(site1),\"\".join(title1))
second_list = html.xpath (′//*[@id=\"wn_blockbottom\"]/div/div/a′) #新聞路徑列表2
for second in second_list:
site2 = second.xpath(\"@href\")
title2 = second.xpath(\"./div/span/text()\")
print(url_2 + \"\".join(site2),\"\".join(title2))
third_list = html.xpath(′//*[@id=\"wn-press\"]/ul/li/div/div[2]/a′) #新聞路徑列表3
for third in third_list:
site3 = third.xpath(\"@href\")
title3 = third.xpath(\"./text()\")
print(\"\".join(site3),\"\".join(title3))
resp.close()
print(\"over\")
2022年10月12日筆者運行程序后,3秒左右完成了爬蟲,爬蟲結果準確率為100%。爬蟲結果如圖3所示,因圖片太寬,只截取了部分內容。
5 結語
歷經3個多月對幾十個程序運行情況的跟蹤研究,筆者發(fā)現網頁源代碼偶爾會發(fā)生變化,導致爬蟲結果出現問題,但只要掌握了Python的requests庫和lxml庫的使用方法,就可以快速針對不同問題微調代碼,解決問題。這說明不能完全依賴編寫好的程序,而應該真正掌握爬蟲技術。經過實踐還發(fā)現,新聞的數量和爬蟲程序的運行時間成正比,新聞數量越多,爬蟲時間越長。雖然本身運行程序的時間很短,但還可以進一步縮短時間。如果采集人員每天都有時間運行程序,就可以修改代碼,在新聞路徑列表代碼的右側添加限制“[:2]”,讓程序只爬取最新的兩條新聞,進一步提高效率??傮w而言,該爬蟲技術具有效率高、準確率高、適用性廣的優(yōu)點。使用爬蟲程序后,核西物院圖書館的采集人員只需要記住自己最后一次運行程序的日期,以極短的時間運行程序并等待爬蟲結果,在爬取結果中定位到該日期之后發(fā)布的新聞,可以通過標題或新聞內容來篩選具有價值的新聞,就能較快速且全面地采集聚變新聞。
綜上所述,通過掌握爬蟲技術進行定期的網絡學術新聞信息收集,核西物院圖書館解決了人工采集不及時、采集信息不全面的問題。未來在實踐中,可以根據不同的需求不斷優(yōu)化程序。如在掌握Python的os庫后可以直接在一個程序中運行事先為各個網頁編寫好的所有程序,一鍵實現對幾十個網頁的信息采集。
筆者希望通過核西物院爬取網絡聚變新聞的個例,為各類圖書館提供一定的實踐參考方向。一方面,所有科技圖書館都應重視網絡學術新聞的采集工作。無論是哪個領域的科研單位,其首要任務都是進行學術研究,做研究則離不開創(chuàng)新。而沒有前沿的科研信息支撐,科研人員無法憑空創(chuàng)新。網絡學術新聞具有更新頻率較快、信息內容較前沿等特點,能夠對更新較慢的學術期刊類文獻做一定的補充,從而有利于科研單位的發(fā)展,因此建議其他領域的科技圖書館加強為其讀者采集網絡學術新聞的重視。另一方面,各類圖書館都可以參照筆者提出的爬蟲技術。該技術適用范圍廣泛,圖書館不但能通過該技術爬取網絡學術新聞網站,還能爬取許多其他信息網站,如圖書信息網站、政府公眾信息網站、統(tǒng)計類信息網站等。通過此技術,圖書館可以更快速、全面地獲取各類信息。不僅能為讀者提供更好的服務,而且方便圖書館開展圖書采購、基金申報、學術研究等其他工作。
參考文獻:
[1] 郝麗佳.高校圖書館網絡學術信息資源的開發(fā)與利用[J].科技信息,2012(36):198.
[2] 張志勇.高校圖書館利用八爪魚網絡爬蟲技術高效采集元數據[J].現代信息科技,2019(4):4-6.
[3] Olston C,Najork M.Web crawling[J].Foundations and trends in information retrieval,2010(3):175-246.
[4] 荀雪蓮,姚文彬.大數據網絡爬蟲技術在智慧圖書館信息資源建設上的應用[J].北華航天工業(yè)學院學報,2020(4):20-22.
[5] 楊學明,劉柏嵩.主題爬蟲在數字圖書館中的應用[J].圖書館雜志,2007(8):47-50,58.
[6] 何鈞雷.以主題爬蟲視角進行數字資源的建設探析[J].電子技術與軟件工程,2014(16):17-18.
[7] 宋宇.MOOC背景下從主題爬蟲角度看圖書館數字資源建設[J].內蒙古科技與經濟,2018(19):103-104.
[8] 付雅慧.優(yōu)化圖書館數字化服務的途徑分析——基于主題爬蟲算法[J].蘭臺內外,2020(10):51-53.
[9] 魏大威,季士妍.國家圖書館網絡信息資源采集與保存平臺關鍵技術實現[J].圖書館,2021(3):45-50.
[10] Fusion Industry Association.The global fusion industry in 2022[R].Washington: FIA,2022.
[11] 李寧.Python從菜鳥到高手[M].北京:清華大學出版社,2018.
[12] 埃里克·馬瑟斯.Python編程:從入門到實踐[M].北京:人民郵電出版社,2016.
段宏嘉 女,1994年生。碩士,助理館員。研究方向:圖書管理與信息服務。
(收稿日期:2023-02-22;責編:鄧鈺。)