亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        爬蟲技術(shù)在科技圖書館網(wǎng)絡(luò)信息采集中的應(yīng)用

        2024-06-03 00:00:00段宏嘉
        圖書館學(xué)刊 2024年3期

        [摘 要]以核工業(yè)西南物理研究院圖書館的學(xué)術(shù)新聞信息采集工作為例,介紹了PyCharm軟件、requests庫和lxml庫的使用方法及爬蟲技術(shù)的使用步驟,列舉3個(gè)具有參考性的新聞信息采集應(yīng)用案例,旨在方便科研人員全面且及時(shí)地掌握信息。

        [關(guān)鍵詞]爬蟲 科技圖書館 圖書館信息 信息服務(wù) 信息采集

        [分類號]G250.73

        互聯(lián)網(wǎng)的發(fā)展拓寬了圖書館的館藏類型,使得其采集對象從紙質(zhì)印刷文獻(xiàn)載體擴(kuò)展到網(wǎng)絡(luò)信息資源(即通過互聯(lián)網(wǎng)發(fā)布、傳遞和儲存的文獻(xiàn)信息資源的綜合,也稱網(wǎng)絡(luò)文獻(xiàn)[1]),網(wǎng)絡(luò)學(xué)術(shù)新聞信息則指的是發(fā)布在互聯(lián)網(wǎng)上具有學(xué)術(shù)研究參考價(jià)值的信息資源,對科研單位科技圖書館的讀者具有重要意義。該類讀者與高校圖書館和公共圖書館的讀者有所不同,科研單位的讀者以科研人員為主,對某一研究領(lǐng)域的最新研發(fā)動態(tài)和科研進(jìn)展都有更大的需求。因此,科技圖書館應(yīng)開展網(wǎng)絡(luò)學(xué)術(shù)新聞信息的采集工作,為讀者采集有關(guān)最新科研進(jìn)展動態(tài)的學(xué)術(shù)新聞,從而方便后期為其提供便捷的學(xué)術(shù)新聞信息服務(wù)。

        不同研究領(lǐng)域的讀者往往具有不同的網(wǎng)絡(luò)學(xué)術(shù)新聞信息需求。核工業(yè)西南物理研究院(以下簡稱“核西物院”)圖書館的采集工作主要服務(wù)于核西物院的科研人員,因此采集的對象主要是核聚變(以下簡稱“聚變”)相關(guān)的學(xué)術(shù)新聞信息。由于互聯(lián)網(wǎng)資源更新速度快且與聚變研究相關(guān)的網(wǎng)頁數(shù)量大,人工手動在幾十個(gè)聚變研究機(jī)構(gòu)的官網(wǎng)和綜合新聞網(wǎng)站上采集新聞費(fèi)時(shí)費(fèi)力,且容易出現(xiàn)關(guān)鍵新聞信息錯(cuò)漏的問題。利用網(wǎng)絡(luò)爬蟲技術(shù)可快速從大量的聚變相關(guān)網(wǎng)站上獲取學(xué)術(shù)新聞信息,網(wǎng)絡(luò)爬蟲能夠按照事先編寫好的程序腳本,對目標(biāo)數(shù)據(jù)進(jìn)行批量采集[2]。定期采集大量網(wǎng)頁內(nèi)容并進(jìn)行存檔以供人們使用是運(yùn)用網(wǎng)絡(luò)爬蟲的一個(gè)重要目的[3]。利用網(wǎng)絡(luò)爬蟲技術(shù)的自動機(jī)器采集代替人工手動采集,不僅能將核西物院圖書館工作人員從重復(fù)且機(jī)械的工作中解脫出來,還能更及時(shí)、全面地實(shí)現(xiàn)網(wǎng)絡(luò)學(xué)術(shù)新聞信息的采集,為信息的開發(fā)工作打下基礎(chǔ)。

        在以往的研究中,圖書館利用爬蟲技術(shù)的采集對象主要有圖書信息[2,4-5]、網(wǎng)絡(luò)期刊文獻(xiàn)信息[2,4-6]和慕課免費(fèi)數(shù)字資源信息[7],采集方法主要涉及主題爬蟲法[5-8]、八爪魚爬蟲法[2]和對python的json庫、requests庫和BeautifulSoup4庫的使用[4]。這些方法都不太適用于圖書館的學(xué)術(shù)新聞信息采集工作。首先,主題爬蟲不夠精準(zhǔn),因?yàn)樵摲椒〞ㄟ^事先設(shè)定好的主題詞采集到許多與學(xué)術(shù)新聞無關(guān)的內(nèi)容。其次,八爪魚爬蟲法不夠靈活,因?yàn)榕廊⌒侣剷r(shí),常會遇到新聞超鏈接不全的問題,而八爪魚爬蟲軟件無法判斷其完整性,也無法自動補(bǔ)全鏈接。最后,Python的BeautifulSoup4庫比起lxml庫的使用方法更復(fù)雜,需要程序編寫者自己思考并編寫出爬取目標(biāo)的路徑代碼,不像lxml庫中的xpath方法那樣可以通過開發(fā)者模式直接復(fù)制目標(biāo)的路徑代碼。

        筆者利用Python的requests庫和lxml庫對網(wǎng)絡(luò)學(xué)術(shù)新聞信息進(jìn)行采集,補(bǔ)充了圖書館使用爬蟲技術(shù)的采集對象,并提供了更精確、靈活、簡便的采集方法。Python是一種可以用于網(wǎng)絡(luò)爬蟲的程序設(shè)計(jì)語言,它所提供的第三方庫requests和lxml可以對網(wǎng)頁進(jìn)行處理。采集人員只需使用程序語言Python3.8,在集成開發(fā)環(huán)境PyCharm中導(dǎo)入requests庫和lxml庫,編寫相應(yīng)的爬蟲代碼,就能實(shí)現(xiàn)對網(wǎng)絡(luò)學(xué)術(shù)新聞信息的采集。

        1 科技圖書館采集網(wǎng)絡(luò)學(xué)術(shù)新聞信息的重要意義

        1.1 便于圖書館提供信息服務(wù)

        科研單位科技圖書館的主要服務(wù)對象是該單位的科研人員。通常這些讀者能通過期刊類的學(xué)術(shù)文獻(xiàn)了解各自領(lǐng)域的國內(nèi)外科研動態(tài)信息,但幾乎每日都會更新的網(wǎng)絡(luò)學(xué)術(shù)新聞不僅相對于紙質(zhì)信息資源的出版速度更快,而且相對于網(wǎng)絡(luò)電子學(xué)術(shù)期刊(出版周期一般為年刊、季刊、雙月刊、月刊)的發(fā)布頻率更快。因此圖書館可以通過采集網(wǎng)絡(luò)學(xué)術(shù)新聞信息的方式為讀者提供更新的學(xué)術(shù)信息。科技圖書館作為科研單位信息資源的匯集地,本身擔(dān)負(fù)為讀者提供信息服務(wù)、滿足讀者信息需求的重要責(zé)任。在數(shù)字化的背景下,科技圖書館不僅應(yīng)該提供傳統(tǒng)紙質(zhì)資源的信息服務(wù),更應(yīng)開展數(shù)字化網(wǎng)絡(luò)資源的特色信息服務(wù)業(yè)務(wù)。采集網(wǎng)絡(luò)學(xué)術(shù)新聞信息是將學(xué)術(shù)信息及時(shí)共享給科研人員的重要基礎(chǔ)和前提,也便于圖書館為其提供后續(xù)信息服務(wù)。

        1.2 有助于記錄學(xué)術(shù)信息資源

        網(wǎng)絡(luò)學(xué)術(shù)新聞信息能夠反映每個(gè)國家或研究機(jī)構(gòu)最新的研究突破和研究進(jìn)展,具有值得記錄的學(xué)術(shù)參考價(jià)值。如不及時(shí)對其進(jìn)行采集,就會造成學(xué)術(shù)信息資源的浪費(fèi)。反之,如果科研單位科技圖書館能及時(shí)、全面地采集網(wǎng)絡(luò)學(xué)術(shù)新聞,將有助于記錄科研發(fā)展規(guī)律。網(wǎng)絡(luò)信息記錄反映了某一時(shí)代的發(fā)展和變化[9],網(wǎng)絡(luò)學(xué)術(shù)信息記錄則能反映某一研究領(lǐng)域的發(fā)展和變化。如果圖書館可以采集每個(gè)研究機(jī)構(gòu)官網(wǎng)的新聞發(fā)布日期、新聞標(biāo)題、新聞內(nèi)容等,并按照日期對新聞信息進(jìn)行排列匯總,就能記錄特定周期內(nèi)特定研究機(jī)構(gòu)的科研發(fā)展規(guī)律,從而為科研人員的選題和研究規(guī)劃提供一定的參考。

        2 核西物院圖書館采集網(wǎng)絡(luò)學(xué)術(shù)新聞信息的特殊意義

        核西物院是從事聚變能源開發(fā)和研究的專業(yè)科研單位,其下屬圖書館屬于眾多科技圖書館中的一個(gè)。核西物院圖書館采集網(wǎng)絡(luò)學(xué)術(shù)新聞信息不僅具有一般科技圖書館采集此類信息的重要信息服務(wù)意義和記錄意義,還具有更特殊的意義。這是因?yàn)槠淙后w主要由聚變領(lǐng)域的科研人員構(gòu)成,由于這一科研領(lǐng)域的特殊性,他們往往較難從國內(nèi)外的相關(guān)新聞網(wǎng)站上獲取到有價(jià)值的信息。核西物院圖書館采集網(wǎng)絡(luò)學(xué)術(shù)新聞信息有助于解決讀者面臨的特殊問題,從而方便其及時(shí)且全面地掌握前沿科研信息,提高獲取此類信息的效率。

        2.1 可供讀者及時(shí)且全面掌握前沿科研信息

        國內(nèi)缺少專門針對聚變研究的綜合新聞網(wǎng)站,且新聞網(wǎng)站的國際聚變新聞存在更新速度慢、素材不全的問題。目前國內(nèi)只有匯集了核聚變新聞和核裂變新聞的核電類新聞網(wǎng)站,如中國核電信息網(wǎng)和北極星核電網(wǎng)。這些網(wǎng)站的新聞都來源于對國內(nèi)核電新聞的轉(zhuǎn)載和對國際新聞的翻譯。國際新聞的語言特點(diǎn),使得其發(fā)布程序增加了人工翻譯和校對的過程。此外,可能因?yàn)榻刂聊壳埃嬲龑?shí)現(xiàn)商用的核電站都是核裂變電站,所以這些網(wǎng)站更關(guān)注裂變新聞。以上兩個(gè)原因?qū)е聡H聚變新聞更新較慢、內(nèi)容不全。以2022年9月中國核電信息網(wǎng)的國際核訊版塊為例,其中國際核電新聞共有79條,而國際聚變新聞僅有兩條,并且這兩條新聞都不能體現(xiàn)聚變研究進(jìn)展。然而據(jù)筆者不完全統(tǒng)計(jì),經(jīng)篩選后9月較有價(jià)值的國際聚變新聞至少有16條。這說明盡管國際聚變新聞本身相對較少,但其真正數(shù)量也比目前國內(nèi)核電類新聞網(wǎng)站發(fā)布得要多。國內(nèi)這些網(wǎng)站沒有對大部分國際聚變新聞進(jìn)行收集、翻譯和發(fā)布。

        考慮以上因素,聚變領(lǐng)域的讀者很難及時(shí)、直接地通過國內(nèi)的綜合新聞網(wǎng)站較全面地了解聚變相關(guān)科研進(jìn)展。因此圖書館采集聚變相關(guān)的網(wǎng)絡(luò)學(xué)術(shù)新聞能夠彌補(bǔ)當(dāng)前國內(nèi)對國際聚變新聞匯集的不足,可供讀者及時(shí)且全面地掌握相關(guān)科研進(jìn)展。

        2.2 提高讀者獲取前沿科研信息的效率

        國際聚變相關(guān)新聞網(wǎng)站數(shù)量過于龐大,導(dǎo)致讀者無法快速篩選出有價(jià)值的信息,因此核西物院圖書館采集相關(guān)學(xué)術(shù)新聞信息,有助于為后續(xù)的信息篩選、翻譯、共享工作打下基礎(chǔ),從而為讀者節(jié)省時(shí)間。據(jù)《2022年全球聚變行業(yè)》報(bào)告不完全統(tǒng)計(jì),全球自1992年起已成立了32家聚變研究機(jī)構(gòu)(除中國外)[10],因此相應(yīng)存在許多機(jī)構(gòu)官網(wǎng)的新聞版塊(子網(wǎng)站)。其他新聞網(wǎng)站還包括1992年前就已成立的權(quán)威聚變研究機(jī)構(gòu)官網(wǎng)的新聞版塊,如英國原子能管理局(1954年)、美國通用原子能公司(1955年)、德國馬克斯·普朗克等離子體物理研究所(1960年)、日本國立核聚變科學(xué)研究所(1989年)官網(wǎng)的新聞版塊等。另外還有一些綜合類新聞網(wǎng)站,包括英國國際核工程網(wǎng)(Nuclear Engineering International)、世界核新聞網(wǎng)(World Nuclear News)、國際熱核試驗(yàn)堆新聞網(wǎng)(ITER Newsline)等。

        總之,國際聚變相關(guān)新聞網(wǎng)站具有數(shù)量龐大的特點(diǎn),而平常忙于實(shí)驗(yàn)研究、數(shù)據(jù)模擬、數(shù)據(jù)分析、設(shè)備調(diào)試等工作的核西物院讀者,無法將太多時(shí)間花費(fèi)在對不定期更新的海量新聞網(wǎng)站的檢索收集上。因此,圖書館采集上述新聞信息對讀者提高獲取前沿科研信息效率具有重要意義。

        3 爬蟲技術(shù)的使用方法與步驟

        3.1 PyCharm軟件的使用方法

        PyCharm是一個(gè)專門用于開發(fā)Python程序的集成開發(fā)環(huán)境(編程軟件),具有代碼編輯、代碼分析、語法高亮等功能[11]。爬取新聞信息的第一步是利用該軟件安裝爬蟲需要的requests庫和lxml庫。通過點(diǎn)擊該軟件底部的terminal命令模式、輸入“pip install requests”、回車后輸入“pip install lxml”、再按回車,就能實(shí)現(xiàn)兩個(gè)庫的安裝。安裝好后即可在該軟件中進(jìn)行代碼的編寫。使用該軟件的另一目的,是方便圖書館工作人員直接點(diǎn)擊爬取到的新聞超鏈接,從而進(jìn)行對新聞原網(wǎng)頁的訪問。這是為了解決不利用任何軟件,直接在Windows系統(tǒng)中使用CMD命令提示符打開并運(yùn)行Python文件時(shí),點(diǎn)擊超鏈接不跳轉(zhuǎn)的問題。

        3.2 requests庫的使用方法

        requests庫是Python的第三方庫,主要用于網(wǎng)頁請求和網(wǎng)頁爬蟲。該庫中與爬取聚變新聞信息相關(guān)的函數(shù)是requests.get(url,headers,verify)函數(shù)。其中url用于向?qū)?yīng)的新聞網(wǎng)頁服務(wù)器發(fā)送請求,作為請求頭的headers用于偽裝成瀏覽器進(jìn)行網(wǎng)頁訪問,verify則用于避免所爬取的網(wǎng)頁因驗(yàn)證書錯(cuò)誤而出現(xiàn)信息報(bào)錯(cuò)問題。雖然信息報(bào)錯(cuò)不會影響爬蟲程序的正常運(yùn)行,但是,它會在爬取內(nèi)容中顯示一些警告信息破壞爬取數(shù)據(jù)的美觀性。通過將verify參數(shù)設(shè)置成False可以取消驗(yàn)證,從而使得爬取到的信息更干凈整潔。隨后使用response=requests.get()函數(shù)來封裝所請求的聚變新聞網(wǎng)頁源代碼數(shù)據(jù),并返回網(wǎng)頁源代碼、保存為response對象。最后通過該庫的text方法將response對象轉(zhuǎn)化成字符串格式。

        3.3 lxml庫的使用方法

        lxml庫同樣也是Python的第三方庫,可用于網(wǎng)頁爬蟲,亦可解析HTML文檔,即一種以超文本標(biāo)記語言提供網(wǎng)頁信息的文檔。該庫中與新聞網(wǎng)頁信息采集相關(guān)的函數(shù)是html=etree.HTML()。首先通過etree.HTML()將字符串格式的response對象轉(zhuǎn)化為HTML文檔,從而構(gòu)造一個(gè)xpath可解析的對象,再將其保存為html對象。

        xpath是一種能夠在HTML文檔中查找信息的語言,可以對文檔中的元素和屬性進(jìn)行定位和爬取。其大致操作方法如下:選擇任意一個(gè)與聚變研究相關(guān)的權(quán)威機(jī)構(gòu)官網(wǎng)或綜合新聞網(wǎng),從中打開聚變研究進(jìn)展新聞版塊所在的網(wǎng)頁頁面,在Chrome瀏覽器中點(diǎn)擊F12鍵,調(diào)出網(wǎng)頁開發(fā)者模式,再使用快捷鍵“Ctrl+shift+c”進(jìn)入元素選擇模式。值得注意的是,大部分網(wǎng)頁上會羅列多條新聞,而單條新聞的所有信息(包含新聞發(fā)布日期、超鏈接、標(biāo)題、摘要和圖片等)一般呈現(xiàn)在一個(gè)單獨(dú)可選中的版塊上。用鼠標(biāo)選中該版塊,元素頁面上就會自動定位到這些信息所在的路徑,再通過右鍵復(fù)制(點(diǎn)擊copy xpath)就可以得到該條新聞信息的xpath路徑(節(jié)點(diǎn))。通過元素選擇模式點(diǎn)擊前3條新聞信息版塊,會發(fā)現(xiàn)其xpath路徑的共同特點(diǎn)。以美國通用原子公司新聞網(wǎng)頁為例,前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]

        其中方括號里的數(shù)字表示的是括號前元素的序號,比如li[2]表示第二個(gè)li元素。對比后發(fā)現(xiàn)前3條新聞xpath路徑的唯一區(qū)別是li[]中的數(shù)字。將li后的方括號及數(shù)字刪除,則會得到一個(gè)包含所有新聞信息版塊的路徑。使用html.xpath()函數(shù),將路徑插入圓括號內(nèi),就能得到一個(gè)包含了每條新聞信息版塊的路徑列表(保存為first_list對象)。利用for first in first_list函數(shù)將該列表進(jìn)行遍歷循環(huán),每次循環(huán)都會從first_list列表中“取得一個(gè)元素”(一條新聞版塊的路徑)賦予first,并執(zhí)行一次代碼塊,直到列表中的所有元素都執(zhí)行了代碼塊后結(jié)束[11]。同時(shí)使用first.xpath()函數(shù)來獲取每條新聞的發(fā)布日期、超鏈接及標(biāo)題等信息。具體實(shí)現(xiàn)方式根據(jù)網(wǎng)站不同略有差異,可通過text()方法來獲取節(jié)點(diǎn)中所需的文字內(nèi)容,亦可使用“@”獲取該節(jié)點(diǎn)下的某條屬性內(nèi)容。最后將匯總到的新聞信息輸出至屏幕。

        3.4 爬蟲技術(shù)的使用步驟

        整個(gè)爬蟲步驟大致為:(1)在PyCharm軟件中創(chuàng)建一個(gè)新的Python文件,并在該文件中導(dǎo)入requests庫和lxml庫。(2)選擇任意一個(gè)與聚變研究相關(guān)的權(quán)威機(jī)構(gòu)官網(wǎng)或綜合新聞網(wǎng),從中找到聚變研究進(jìn)展新聞版塊所在的網(wǎng)頁頁面,從而確定需要爬取的url(網(wǎng)址)。(3)利用用戶代理使服務(wù)器能夠識別用戶的操作系統(tǒng)版本、瀏覽器版本、CPU類型等,以便偽裝成瀏覽器進(jìn)行網(wǎng)頁訪問。(4)通過requests庫中的requests.get()函數(shù)獲取新聞網(wǎng)頁(url)源代碼。(5)通過lxml庫的etree.HTML()函數(shù)將字符串格式的網(wǎng)頁源代碼轉(zhuǎn)化成xpath可解析的HTML文檔。(6)確定需爬取的目標(biāo)信息,如新聞發(fā)布時(shí)間、超鏈接和標(biāo)題。(7)分析目標(biāo)新聞網(wǎng)頁的網(wǎng)頁源代碼,利用xpath方法定位并復(fù)制任意一條新聞信息版塊(包含新聞發(fā)布日期、超鏈接、標(biāo)題、摘要和圖片等)的xpath路徑。(8)對比2~3條新聞信息版塊的路徑,找到規(guī)律,歸納出能夠包含每條新聞信息版塊的路徑列表。(9)利用xpath()函數(shù)爬取該列表。(10)利用for…in函數(shù)將該列表進(jìn)行遍歷循環(huán),并且使用xpath()函數(shù)爬取列表中每條新聞的發(fā)布日期、超鏈接及標(biāo)題等信息。(11)使用print()函數(shù)和join()函數(shù)輸出干凈、整潔的新聞信息。

        4 科技圖書館學(xué)術(shù)新聞采集案例應(yīng)用

        核西物院科技圖書館利用爬蟲技術(shù)采集聚變相關(guān)學(xué)術(shù)新聞信息是為了方便工作人員及時(shí)捕捉最新的新聞,從而進(jìn)行篩選、翻譯或轉(zhuǎn)載,最終上傳到單位的網(wǎng)站上。該目的決定了爬取目標(biāo)的范圍應(yīng)包括新聞發(fā)布日期、超鏈接和標(biāo)題。爬取新聞發(fā)布日期有利于圖書館工作人員快速判斷新聞的時(shí)效性,爬取新聞超鏈接便于工作人員快速訪問新聞原頁面、瀏覽新聞內(nèi)容,爬取新聞標(biāo)題則有助于工作人員判斷新聞的相關(guān)性與重要性。其他圖書館的工作人員可以按照各自的目的,自行調(diào)整爬取目標(biāo)。

        筆者列舉了3個(gè)具有參考性的爬蟲應(yīng)用案例。其中案例一列舉了最典型的新聞信息爬蟲代碼,所有新聞網(wǎng)站的爬蟲代碼都可以此為基礎(chǔ);案例二和案例三列舉了爬取新聞時(shí)的常見問題、解決方案(相應(yīng)代碼的修改方式)和具體代碼。

        4.1 案例一

        一些聚變新聞網(wǎng)頁源代碼較標(biāo)準(zhǔn)、易爬取,因而以這類網(wǎng)頁為爬取目標(biāo)寫出的爬蟲核心代碼也較標(biāo)準(zhǔn)、適用范圍廣。其他新聞網(wǎng)頁的代碼只需在此類代碼上進(jìn)行靈活修改即可。筆者以網(wǎng)頁源代碼較標(biāo)準(zhǔn)的歐洲聚變能組織(F4E)的新聞網(wǎng)頁作為爬取案例。其核心代碼如下:

        import requests #導(dǎo)入request庫

        from lxml import etree #導(dǎo)入lxml庫中的etree包

        url = \"https://fusionforenergy.europa.eu/news/\" #歐洲聚變能組織的新聞網(wǎng)址

        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) #獲取并返回網(wǎng)頁源代碼

        html = etree.HTML(resp.text) #先將網(wǎng)頁源代碼轉(zhuǎn)化為字符串格式,再轉(zhuǎn)化為HTML文檔以便使用xpath函數(shù)

        first_list=html.xpath(′/html/body/div[1]/div[2]/section/ma

        in/article/div/div[2]/ul/li/div[2]′) #利用xpath方法得出包含爬取目標(biāo)的路徑列表

        for first in first_list: #使用for…in循環(huán)從列表中依次取值,賦給first

        date= first.xpath(\"div[2]/div[1]/text()\") #獲取路徑節(jié)點(diǎn)第二個(gè)div節(jié)點(diǎn)下、第一個(gè)div節(jié)點(diǎn)下的文本內(nèi)容(新聞發(fā)布日期)

        title = first.xpath(\"a/text()\") #獲取路徑節(jié)點(diǎn)a節(jié)點(diǎn)下的文本內(nèi)容(新聞標(biāo)題)

        site = first.xpath(\"@href\") #獲取路徑節(jié)點(diǎn)的href屬性內(nèi)容(新聞超鏈接)

        print(\"\".join(date),\"\".join(site),\"\".join(title)) #利用join()函數(shù)把獲取的HTML文檔轉(zhuǎn)換成字符串,以使輸出的新聞發(fā)布日期、超鏈接和標(biāo)題內(nèi)容干凈、整潔

        resp.close() #爬取完成后關(guān)閉與服務(wù)器的連接

        print(\"over\") #輸出over,以便確定爬取過程結(jié)束

        筆者2022年10月12日運(yùn)行程序后,兩秒內(nèi)完成了爬蟲,爬蟲結(jié)果準(zhǔn)確率為100%。其中新聞日期的書寫順序是“日、月、年”。爬蟲結(jié)果如圖1所示,由于爬取的標(biāo)題過長,進(jìn)行了剪裁。

        4.2 案例二

        爬取新聞網(wǎng)頁信息時(shí)遇到的常見問題之一是爬取的超鏈接不全或部分不全,從而阻礙圖書館工作人員對其進(jìn)行訪問。解決此問題的辦法是:(1)對比爬取的鏈接與原鏈接的區(qū)別,從而確定需補(bǔ)全的url網(wǎng)址。(2)如果爬取的鏈接都不全,則只需在輸出爬取結(jié)果時(shí),利用“+”合并所爬取的鏈接和需補(bǔ)全的鏈接,以得到完整的鏈接。(3)如果爬取鏈接只有部分不全,則使用if-else語句來判斷爬取的鏈接中是否含有http,若含有,證明爬取鏈接完整,則直接輸出鏈接;如不含有,說明“條件測試未通過”,則執(zhí)行else的操作,即通過“+”拼接鏈接[12]。

        筆者以日本國立聚變科學(xué)研究所(NIFS)的新聞網(wǎng)頁為爬取案例,旨在為遇到此類問題的圖書館工作人員提供可參考的解決方法。代碼結(jié)構(gòu)和經(jīng)典案例大致相同,只需針對鏈接存在的問題進(jìn)行部分修改。其核心代碼如下:

        import requests

        from lxml import etree

        url_1 = \"https://www.nifs.ac.jp/en/news/index.html\" #日本國立聚變科學(xué)研究所新聞版塊的網(wǎng)址

        url_2 =\"https://www.nifs.ac.jp/en/news/\" #需補(bǔ)全的鏈接

        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日運(yùn)行程序后,兩秒內(nèi)完成了爬蟲,爬蟲結(jié)果準(zhǔn)確率為100%。爬取結(jié)果如圖2所示。

        4.3 案例三

        爬取新聞網(wǎng)頁信息時(shí)還會遇到兩個(gè)常見問題:(1)新聞信息版塊里沒有新聞發(fā)布日期;(2)無法用同一個(gè)規(guī)律總結(jié)所有新聞信息版塊所在的xpath路徑。

        在兩種情況下可以忽略問題一:第一,如果整個(gè)網(wǎng)頁源代碼和新聞網(wǎng)頁上都缺少新聞發(fā)布日期,則無法爬?。坏诙?,如果網(wǎng)頁段代碼里沒有專門的新聞發(fā)布日期,并且新聞發(fā)布日期是超鏈接的一部分,則無需爬取。但是如果在該網(wǎng)頁上的其他版塊能找到新聞發(fā)布日期且只有兩個(gè)發(fā)布日期(匯集新聞的起止日期),則需用xpath方法對該版塊上的日期進(jìn)行爬取,并且輸出利用“+”合并的起始日期、連字符和終止日期,隔時(shí)段更新的綜合新聞網(wǎng)站往往會出現(xiàn)該問題。

        針對問題二的解決方法是:第一,分析網(wǎng)頁源代碼,找到一條或多條新聞信息所在版塊的xpath路徑(一些網(wǎng)頁的首條新聞往往獨(dú)占單獨(dú)的版塊且不與其他新聞遵循同一個(gè)xpath路徑規(guī)律);第二,分析路徑規(guī)律,針對規(guī)律相同的新聞編寫新的路徑列表;第三,利用xpath()函數(shù)爬取所有路徑列表。

        綜合新聞網(wǎng)站國際熱核試驗(yàn)堆新聞網(wǎng)的更新時(shí)間不固定,更新內(nèi)容涵蓋某段起止日期內(nèi)的一些重要科研機(jī)構(gòu)的新聞。其新聞的xpath路徑遵循3種不同的規(guī)律。由于該網(wǎng)頁存在以上兩個(gè)問題,所以筆者以其作為爬取案例。核心代碼如下:

        import requests

        from lxml import etree

        url_1 = \"https://www.iter.org/news/whatsnew\"

        url_2 = \"https://www.iter.org\" #需補(bǔ)全的鏈接網(wǎng)址

        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日筆者運(yùn)行程序后,3秒左右完成了爬蟲,爬蟲結(jié)果準(zhǔn)確率為100%。爬蟲結(jié)果如圖3所示,因圖片太寬,只截取了部分內(nèi)容。

        5 結(jié)語

        歷經(jīng)3個(gè)多月對幾十個(gè)程序運(yùn)行情況的跟蹤研究,筆者發(fā)現(xiàn)網(wǎng)頁源代碼偶爾會發(fā)生變化,導(dǎo)致爬蟲結(jié)果出現(xiàn)問題,但只要掌握了Python的requests庫和lxml庫的使用方法,就可以快速針對不同問題微調(diào)代碼,解決問題。這說明不能完全依賴編寫好的程序,而應(yīng)該真正掌握爬蟲技術(shù)。經(jīng)過實(shí)踐還發(fā)現(xiàn),新聞的數(shù)量和爬蟲程序的運(yùn)行時(shí)間成正比,新聞數(shù)量越多,爬蟲時(shí)間越長。雖然本身運(yùn)行程序的時(shí)間很短,但還可以進(jìn)一步縮短時(shí)間。如果采集人員每天都有時(shí)間運(yùn)行程序,就可以修改代碼,在新聞路徑列表代碼的右側(cè)添加限制“[:2]”,讓程序只爬取最新的兩條新聞,進(jìn)一步提高效率??傮w而言,該爬蟲技術(shù)具有效率高、準(zhǔn)確率高、適用性廣的優(yōu)點(diǎn)。使用爬蟲程序后,核西物院圖書館的采集人員只需要記住自己最后一次運(yùn)行程序的日期,以極短的時(shí)間運(yùn)行程序并等待爬蟲結(jié)果,在爬取結(jié)果中定位到該日期之后發(fā)布的新聞,可以通過標(biāo)題或新聞內(nèi)容來篩選具有價(jià)值的新聞,就能較快速且全面地采集聚變新聞。

        綜上所述,通過掌握爬蟲技術(shù)進(jìn)行定期的網(wǎng)絡(luò)學(xué)術(shù)新聞信息收集,核西物院圖書館解決了人工采集不及時(shí)、采集信息不全面的問題。未來在實(shí)踐中,可以根據(jù)不同的需求不斷優(yōu)化程序。如在掌握Python的os庫后可以直接在一個(gè)程序中運(yùn)行事先為各個(gè)網(wǎng)頁編寫好的所有程序,一鍵實(shí)現(xiàn)對幾十個(gè)網(wǎng)頁的信息采集。

        筆者希望通過核西物院爬取網(wǎng)絡(luò)聚變新聞的個(gè)例,為各類圖書館提供一定的實(shí)踐參考方向。一方面,所有科技圖書館都應(yīng)重視網(wǎng)絡(luò)學(xué)術(shù)新聞的采集工作。無論是哪個(gè)領(lǐng)域的科研單位,其首要任務(wù)都是進(jìn)行學(xué)術(shù)研究,做研究則離不開創(chuàng)新。而沒有前沿的科研信息支撐,科研人員無法憑空創(chuàng)新。網(wǎng)絡(luò)學(xué)術(shù)新聞具有更新頻率較快、信息內(nèi)容較前沿等特點(diǎn),能夠?qū)Ω螺^慢的學(xué)術(shù)期刊類文獻(xiàn)做一定的補(bǔ)充,從而有利于科研單位的發(fā)展,因此建議其他領(lǐng)域的科技圖書館加強(qiáng)為其讀者采集網(wǎng)絡(luò)學(xué)術(shù)新聞的重視。另一方面,各類圖書館都可以參照筆者提出的爬蟲技術(shù)。該技術(shù)適用范圍廣泛,圖書館不但能通過該技術(shù)爬取網(wǎng)絡(luò)學(xué)術(shù)新聞網(wǎng)站,還能爬取許多其他信息網(wǎng)站,如圖書信息網(wǎng)站、政府公眾信息網(wǎng)站、統(tǒng)計(jì)類信息網(wǎng)站等。通過此技術(shù),圖書館可以更快速、全面地獲取各類信息。不僅能為讀者提供更好的服務(wù),而且方便圖書館開展圖書采購、基金申報(bào)、學(xué)術(shù)研究等其他工作。

        參考文獻(xiàn):

        [1] 郝麗佳.高校圖書館網(wǎng)絡(luò)學(xué)術(shù)信息資源的開發(fā)與利用[J].科技信息,2012(36):198.

        [2] 張志勇.高校圖書館利用八爪魚網(wǎng)絡(luò)爬蟲技術(shù)高效采集元數(shù)據(jù)[J].現(xiàn)代信息科技,2019(4):4-6.

        [3] Olston C,Najork M.Web crawling[J].Foundations and trends in information retrieval,2010(3):175-246.

        [4] 荀雪蓮,姚文彬.大數(shù)據(jù)網(wǎng)絡(luò)爬蟲技術(shù)在智慧圖書館信息資源建設(shè)上的應(yīng)用[J].北華航天工業(yè)學(xué)院學(xué)報(bào),2020(4):20-22.

        [5] 楊學(xué)明,劉柏嵩.主題爬蟲在數(shù)字圖書館中的應(yīng)用[J].圖書館雜志,2007(8):47-50,58.

        [6] 何鈞雷.以主題爬蟲視角進(jìn)行數(shù)字資源的建設(shè)探析[J].電子技術(shù)與軟件工程,2014(16):17-18.

        [7] 宋宇.MOOC背景下從主題爬蟲角度看圖書館數(shù)字資源建設(shè)[J].內(nèi)蒙古科技與經(jīng)濟(jì),2018(19):103-104.

        [8] 付雅慧.優(yōu)化圖書館數(shù)字化服務(wù)的途徑分析——基于主題爬蟲算法[J].蘭臺內(nèi)外,2020(10):51-53.

        [9] 魏大威,季士妍.國家圖書館網(wǎng)絡(luò)信息資源采集與保存平臺關(guān)鍵技術(shù)實(shí)現(xiàn)[J].圖書館,2021(3):45-50.

        [10] Fusion Industry Association.The global fusion industry in 2022[R].Washington: FIA,2022.

        [11] 李寧.Python從菜鳥到高手[M].北京:清華大學(xué)出版社,2018.

        [12] 埃里克·馬瑟斯.Python編程:從入門到實(shí)踐[M].北京:人民郵電出版社,2016.

        段宏嘉 女,1994年生。碩士,助理館員。研究方向:圖書管理與信息服務(wù)。

        (收稿日期:2023-02-22;責(zé)編:鄧鈺。)

        成人影院羞羞的视频免费观看 | 91青青草久久| 91久久国产精品综合| 亚洲av日韩av卡二| 欧美亚洲色综久久精品国产| 亚洲AV日韩AV永久无码电影| 免費一级欧美精品| 综合亚洲二区三区四区在线 | 日韩欧美亚洲中字幕在线播放| 99久久精品国产一区色| 国产精品一区二区三区在线免费| 成人欧美一区二区三区1314 | 无码人妻专区一区二区三区| 极品少妇人妻一区二区三区| 亚洲av成人片色在线观看高潮 | 热综合一本伊人久久精品| 无码人妻久久一区二区三区免费丨| 老熟女重囗味hdxx70星空| 日韩五十路| 亚洲精品中文字幕一二| 欧美成人秋霞久久aa片| 亚洲精品一区二区三区大桥未久| 玩弄人妻奶水无码AV在线| 各类熟女熟妇激情自拍| 国产超碰女人任你爽| 国产福利午夜波多野结衣| 成年人视频在线播放视频| 亚洲一区二区三区精品| 国产白袜脚足j棉袜在线观看| 伊人精品在线观看| 国产一级av理论手机在线| 老熟妇乱子伦牲交视频| 天天摸日日摸狠狠添| 男女高潮免费观看无遮挡| 日韩午夜免费视频精品一区| 成人国产精品一区二区视频| 国产美熟女乱又伦av果冻传媒| 久久2020精品免费网站| 国产综合色在线精品| japanesehd中国产在线看| 国内专区一区二区三区|