国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python批量下載參考文獻(xiàn)|基于Python的Sci-Hub下載腳本|Python批量下載sci-hub文獻(xiàn)|如何使用sci-hub批量下載論文

這篇具有很好參考價值的文章主要介紹了Python批量下載參考文獻(xiàn)|基于Python的Sci-Hub下載腳本|Python批量下載sci-hub文獻(xiàn)|如何使用sci-hub批量下載論文。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本篇博文將介紹如何通過Python的代碼實現(xiàn)快速下載指定DOI號對應(yīng)的文獻(xiàn),并且使用Sci-Hub作為下載庫。

一、庫函數(shù)準(zhǔn)備

在開始之前,我們需要先安裝一些必要的庫,包括:

  1. requests:發(fā)送HTTP請求并獲取響應(yīng)的庫;
  2. beautifulsoup4:用于解析HTML頁面;
  3. threading:用于實現(xiàn)多線程處理;

這些庫可以通過pip命令進(jìn)行安裝,具體命令如下:

pip install requests
pip install BeautifulSoup
pip install threading

除此之外,還需要在代碼所在目錄下創(chuàng)建一個名為“papers”的文件夾,用于保存下載下來的文獻(xiàn)。同時,需要準(zhǔn)備一個包含多個DOI號的txt文件,每個DOI號占一行。
Python批量下載參考文獻(xiàn)|基于Python的Sci-Hub下載腳本|Python批量下載sci-hub文獻(xiàn)|如何使用sci-hub批量下載論文

二、實現(xiàn)步驟

整個下載過程大致可以分為以下幾個步驟:

  1. 讀取存儲有DOI號的txt文件;
  2. 構(gòu)造Sci-Hub鏈接并發(fā)送HTTP請求;
  3. 解析HTML頁面,獲取文獻(xiàn)下載鏈接;
  4. 下載文獻(xiàn)并保存到本地文件夾;
  5. 記錄下載成功或失敗的情況。

三、實現(xiàn)算法

代碼通過讀取txt文件中的doi號來拼接Sci-Hub的鏈接,然后解析得到文獻(xiàn)下載鏈接并進(jìn)行下載

定義了HTTP請求需要的請求頭;接著定義了一個download_paper()函數(shù),用于下載文獻(xiàn)并保存到本地,其中doi參數(shù)是需要下載的文獻(xiàn)的DOI號;在 download_paper() 函數(shù)內(nèi),我們首先根據(jù)DOI號構(gòu)造了Sci-Hub鏈接,并發(fā)送HTTP請求;然后通過解析HTML頁面,獲取到了文獻(xiàn)的下載鏈接,并使用requests庫下載文獻(xiàn)到本地,并將下載成功和失敗的信息輸出到控制臺或記錄到一個日志文件中;最后,我們打開存儲有DOI號的txt文件,并遍歷其中的每一行,調(diào)用download_paper()函數(shù)下載對應(yīng)的文獻(xiàn)。

需要注意的是,由于Sci-Hub常常會更換域名,因此在實際應(yīng)用中,我們需要通過瀏覽器訪問Sci-Hub,找到當(dāng)前可用的域名,并將其替換到上述代碼中的鏈接中。

四、加速下載

雖然上述代碼已經(jīng)可以完成文獻(xiàn)下載的任務(wù),但是由于單線程下載速度較慢,因此我們可以使用多線程來加速下載過程。具體來說,我們可以將需要下載文獻(xiàn)的DOI號作為參數(shù)傳遞給download_paper()函數(shù),并創(chuàng)建多個線程來并行下載文獻(xiàn)。下面是一種使用多線程下載文獻(xiàn)的代碼實現(xiàn)方式:

import requests
from bs4 import BeautifulSoup
import os
import threading

# 創(chuàng)建papers文件夾用于保存文獻(xiàn)
path = "C:/Users/ypzhao/Desktop/papers/"
if not os.path.exists(path):
    os.mkdir(path)

# 請求頭
head = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36"
}

# 下載文獻(xiàn)的函數(shù)
def download_paper(doi):
    # 拼接Sci-Hub鏈接
    url = "https://www.sci-hub.ren/" + doi + "#"
    
    try:
        download_url = ""
        
        # 發(fā)送HTTP請求并解析HTML頁面
        r = requests.get(url, headers=head)
        r.raise_for_status()
        soup = BeautifulSoup(r.text, "html.parser")
        
        # 解析得到文獻(xiàn)下載鏈接
        if soup.iframe == None:
            download_url = "https:" + soup.embed.attrs["src"]
        else:
            download_url = soup.iframe.attrs["src"]
        
        # 下載文獻(xiàn)并保存到文件
        print(doi + "\t正在下載\n下載鏈接為\t" + download_url)
        download_r = requests.get(download_url, headers=head)
        download_r.raise_for_status()
        with open(path + doi.replace("/", "_") + ".pdf", "wb+") as temp:
            temp.write(download_r.content)

        print(doi + "\t文獻(xiàn)下載成功.\n")

    # 下載失敗時記錄錯誤信息
    except Exception as e:
        with open("error.log", "a+") as error:
            error.write(doi + "\t下載失敗!\n")
            if download_url.startswith("https://"):
                error.write("下載url鏈接為: " + download_url + "\n")
            error.write(str(e) + "\n\n")

# 打開包含doi號的txt文件
with open(path + "doi.txt", "r", encoding="utf-8") as f:
    # 遍歷讀取doi號,并啟動多線程下載文獻(xiàn)
    threads = []
    for line in f:
        doi = line.strip()
        t = threading.Thread(target=download_paper, args=(doi,))
        threads.append(t)
    
    # 啟動所有線程
    for t in threads:
        t.start()

    # 等待所有線程完成
    for t in threads:
        t.join()

五、運行結(jié)果

Python批量下載參考文獻(xiàn)|基于Python的Sci-Hub下載腳本|Python批量下載sci-hub文獻(xiàn)|如何使用sci-hub批量下載論文文章來源地址http://www.zghlxwxcb.cn/news/detail-471137.html

到了這里,關(guān)于Python批量下載參考文獻(xiàn)|基于Python的Sci-Hub下載腳本|Python批量下載sci-hub文獻(xiàn)|如何使用sci-hub批量下載論文的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 基于JAVA餐廳預(yù)約訂座系統(tǒng)設(shè)計與實現(xiàn)(springboot框架) 參考文獻(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計教育和輔導(dǎo)。 所有項目都配有從入門到精通的基礎(chǔ)知識視頻課程,免費 項目配有對應(yīng)開發(fā)文檔、開題報告、任務(wù)書、

    2024年01月17日
    瀏覽(29)
  • 基于JAVA城市文化展示系統(tǒng)設(shè)計與實現(xiàn)(springboot框架) 參考文獻(xiàn)

    基于JAVA城市文化展示系統(tǒng)設(shè)計與實現(xiàn)(springboot框架) 參考文獻(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計教育和輔導(dǎo)。 所有項目都配有從入門到精通的基礎(chǔ)知識視頻課程,免費 項目配有對應(yīng)開發(fā)文檔、開題報告、任務(wù)書、

    2024年01月21日
    瀏覽(44)
  • 基于JAVA圖書商城購物系統(tǒng)設(shè)計與實現(xiàn)(springboot框架) 參考文獻(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計教育和輔導(dǎo)。 所有項目都配有從入門到精通的基礎(chǔ)知識視頻課程,免費 項目配有對應(yīng)開發(fā)文檔、開題報告、任務(wù)書、

    2024年01月17日
    瀏覽(33)
  • 基于微信陜西西安景點訂票小程序系統(tǒng)設(shè)計與實現(xiàn) 參考文獻(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計教育和輔導(dǎo)。 所有項目都配有從入門到精通的基礎(chǔ)知識視頻課程,免費 項目配有對應(yīng)開發(fā)文檔、開題報告、任務(wù)書、

    2024年01月25日
    瀏覽(22)
  • 基于Java餐廳預(yù)約訂座系統(tǒng)的設(shè)計與實現(xiàn)(Springboot框架) 參考文獻(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計教育和輔導(dǎo)。 所有項目都配有從入門到精通的基礎(chǔ)知識視頻課程,免費 項目配有對應(yīng)開發(fā)文檔、開題報告、任務(wù)書、

    2024年02月20日
    瀏覽(24)
  • 基于JAVA新聞信息管理系統(tǒng)設(shè)計與實現(xiàn)(springboot框架) 參考文獻(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計教育和輔導(dǎo)。 所有項目都配有從入門到精通的基礎(chǔ)知識視頻課程,免費 項目配有對應(yīng)開發(fā)文檔、開題報告、任務(wù)書、

    2024年01月18日
    瀏覽(26)
  • 基于Java旅游景區(qū)景點訂票系統(tǒng)的設(shè)計與實現(xiàn)(Springboot框架) 參考文獻(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計教育和輔導(dǎo)。 所有項目都配有從入門到精通的基礎(chǔ)知識視頻課程,免費 項目配有對應(yīng)開發(fā)文檔、開題報告、任務(wù)書、

    2024年02月20日
    瀏覽(24)
  • 基于JAVA高校校園實驗室預(yù)約系統(tǒng)設(shè)計與實現(xiàn)(springboot框架) 參考文獻(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計教育和輔導(dǎo)。 所有項目都配有從入門到精通的基礎(chǔ)知識視頻課程,免費 項目配有對應(yīng)開發(fā)文檔、開題報告、任務(wù)書、

    2024年01月18日
    瀏覽(38)
  • 基于JAVA自習(xí)室教室座位預(yù)約系統(tǒng)設(shè)計與實現(xiàn)(springboot框架) 參考文獻(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計教育和輔導(dǎo)。 所有項目都配有從入門到精通的基礎(chǔ)知識視頻課程,免費 項目配有對應(yīng)開發(fā)文檔、開題報告、任務(wù)書、

    2024年01月22日
    瀏覽(22)
  • 基于JAVA高校校園學(xué)習(xí)資料共享系統(tǒng) 設(shè)計與實現(xiàn)(springboot框架) 參考文獻(xiàn)

    ?博主介紹 :黃菊華老師《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計教育和輔導(dǎo)。 所有項目都配有從入門到精通的基礎(chǔ)知識視頻課程,免費 項目配有對應(yīng)開發(fā)文檔、開題報告、任務(wù)書、

    2024年01月19日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包