Python爬蟲練習(xí)(一):爬取NCBI pubmed搜索結(jié)果doi號(hào)并進(jìn)行文獻(xiàn)下載(requests+正則解析)

爬蟲是python的強(qiáng)項(xiàng),也是其熱門應(yīng)用領(lǐng)域炸茧,有很多完善成熟的爬蟲模塊/庫(kù),像是scrapy稿静、selenium梭冠、beautifulsoup,以及簡(jiǎn)易的urlib改备、requests控漠。今天就是介紹一下怎么用requests簡(jiǎn)單爬取pubmed的文獻(xiàn)搜索結(jié)果并進(jìn)行批量下載全部搜索結(jié)果(當(dāng)然前提是給出了doi號(hào)),已經(jīng)將關(guān)鍵代碼進(jìn)行了注釋悬钳,只需要運(yùn)行代碼盐捷,然后輸入你的搜索關(guān)鍵詞,用空格隔開默勾,即可自動(dòng)獲得doi號(hào)并且從sci-hub地址下載文獻(xiàn)(下載到你的當(dāng)前文件夾)碉渡,不過(guò)。母剥。滞诺。由于網(wǎng)速原因,python去下載確實(shí)有點(diǎn)不太安全环疼,因?yàn)橐膊缓脭帱c(diǎn)續(xù)傳什么的习霹。。秦爆。所以我把sci-hub的對(duì)應(yīng)pdf下載地址還寫入到了一個(gè)文件里序愚,復(fù)制粘貼到迅雷里即可下載,這樣做的話可以直接把代碼段中直接下載pdf那段注釋掉等限。

import requests
import re
import os
if __name__ == "__main__":
    # UA偽裝
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \
        (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"
    }
    # 設(shè)定pubmed的url,以及搜索關(guān)鍵詞芬膝,從用戶端空格隔開輸入
    url = "https://pubmed.ncbi.nlm.nih.gov/"
    term = input("Please input your keyword: ").split(" ")
    # pubmed一頁(yè)顯示的結(jié)果數(shù)量
    size = 200
    # 結(jié)果頁(yè)碼號(hào)
    page = 1
    param = {
        "term": term,
        "size": size,
        "page": page
    }
    doi_list = []
    # 發(fā)送請(qǐng)求
    response = requests.get(url=url, params=param, headers=headers)
    page_text = response.text
    # 得到結(jié)果總數(shù)量
    results_amount = int(re.search(r"""<span class="value">(\d+(?:,?\d+)?)</span>.*?results""", page_text,
                                   re.DOTALL).group(1).replace(",", ""))
    # 正則獲得doi號(hào) 
    doi_list += re.findall(r"""doi: (10\..*?)\.[ <]""", page_text)
    # 模擬翻頁(yè)望门,將剩余pages中的doi號(hào)提取
    if results_amount % 200 == 0:
        step_num = results_amount / 200 - 1
    else:
        step_num = results_amount // 200
    if step_num:
        for page in range(2, step_num+2):
            size = 200
            page = page
            param = {
                "term": term,
                "size": size,
                "page": page
            }
            response = requests.get(url=url, params=param, headers=headers)
            page_text = response.text
            doi_list += re.findall(r"""doi: (10\..*?)\.[ <]""", page_text)

    # 從sci-hub下載
    for doi in doi_list:
        down_url = r"https://sci.bban.top/pdf/"+doi+".pdf"
        # 將下載地址寫入文件
        with open(r"./down_url.txt", "a") as u:
            u.write(down_url+"\n")
        r = requests.get(url=down_url)
        # 直接下載pdf
        with open(f"./{os.path.basename(down_url)}", "wb") as f:
            f.write(r.content)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锰霜,隨后出現(xiàn)的幾起案子筹误,更是在濱河造成了極大的恐慌,老刑警劉巖癣缅,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厨剪,死亡現(xiàn)場(chǎng)離奇詭異哄酝,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)祷膳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門陶衅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人直晨,你說(shuō)我怎么就攤上這事搀军。” “怎么了勇皇?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵罩句,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我敛摘,道長(zhǎng)门烂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任兄淫,我火速辦了婚禮屯远,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拖叙。我一直安慰自己氓润,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布薯鳍。 她就那樣靜靜地躺著咖气,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挖滤。 梳的紋絲不亂的頭發(fā)上崩溪,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音斩松,去河邊找鬼伶唯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛惧盹,可吹牛的內(nèi)容都是我干的乳幸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼钧椰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼粹断!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起嫡霞,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瓶埋,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體养筒,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡曾撤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晕粪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挤悉。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖兵多,靈堂內(nèi)的尸體忽然破棺而出尖啡,到底是詐尸還是另有隱情,我是刑警寧澤剩膘,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布衅斩,位于F島的核電站,受9級(jí)特大地震影響怠褐,放射性物質(zhì)發(fā)生泄漏畏梆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一奈懒、第九天 我趴在偏房一處隱蔽的房頂上張望奠涌。 院中可真熱鬧,春花似錦磷杏、人聲如沸溜畅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)慈格。三九已至,卻和暖如春遥金,著一層夾襖步出監(jiān)牢的瞬間浴捆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工稿械, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留选泻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓美莫,卻偏偏與公主長(zhǎng)得像页眯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子厢呵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容