基于Python 爬蟲從NCBI批量下載核苷酸序列


基于Python爬蟲從NCBI批量下載數據的腳本


一、前言

當前NCBI作為分子生物學界最普遍使用的基因數據儲存和處理系統,由于在需要大批量下載基因序列時,網站未提供相應下載工具,所以本人以節約時間成本為目的,提高科研工作效率為出發點,編寫從NCBI上大批量爬取基因序列的腳本,同時以此為生物信息學課程作業。編碼編寫水平有限,望指教。

二、開發思路

1.當我們使用爬蟲爬取相關網站的數據時,首先我們需要了解瀏覽器與網站服務器如何實現數據交互。這里先介紹幾個基礎概念:

1.1 URL:Internet上的每一個網頁都具有一個唯一的名稱標識,通常稱之為URL (Uniform Resource Locator, 統一資源定位器)。它是www的統一資源定位標志,簡單地說URL就是web地址,俗稱“網址”。

1.2 http協議: Internet上的每一個網頁都具有一個唯一的名稱標識,通常稱之為UR(UniformResource Locator, 統一資源定位器)。它是www的統一資源定位標志,簡單地說URL就是web地址,俗稱“網址”,簡單來說,瀏覽器與服務器之間數據交流是按照http協議規定的方式進行。

圖一

如圖所示,瀏覽器遵循http協議按照指定url發送數據請求,即request,服務器響應瀏覽器發出的請求返回數據稱為response。在我們向瀏覽器請求數據時,需要一個實體發出請求,通常瀏覽器即為這個實體,也就是用戶代理,爬蟲爬取數據的過程也就是通過腳本程序將自己偽裝成瀏覽器來訪問服務器獲取數據,再對數據進行解析提取。

??? 2.首先我們看一下正常情況下,通過瀏覽器訪問NCBI數據庫的方式,如圖二所示,通過輸入網址National?Center for Biotechnology Information (nih.gov),瀏覽器就會打開此頁面,進入NCBI的核苷酸數據庫,在搜索框中輸入NCBI數據庫定義的Gene Bank號,就可以找到我們想要找的核苷酸序列,在NCBI數據庫每一個Gene Bank號對應唯一的核苷酸序列。

圖二

下面以gene bank:T42934為例,搜索該gene bank對應的核苷酸序列,在搜索框中輸入T42934,并點擊頁面FASTA選項,瀏覽器顯示頁面如圖三所示。

圖三

從圖中我們可以很明顯看出一些變化,第一點:網址的變化與圖二相比,圖三的網址添加了一些參數包括gene bank 和report= fasta。通過分析添加這些參數,我們知道每個參數的功能。Gene ban:定位到指定的序列,fasta:以fasta數據格式輸出。第二點我們需要爬取的網頁數據就是圖三中紅色框中的內容,所以我們只要通過指定的URL獲取到這個html文件,再提取關鍵數據。爬蟲的主要工作就完成了。通過以上描述,我們大致了解到瀏覽器與服務器之間數據傳輸的方式,現在我們借助爬蟲實現與服務器的數據交互。

三、 代碼實現

爬蟲主程序如圖四所示,由于圖三中紅色框內數據,并非由黃色框中url搜索的到的,而是另外動態加載得到的數據。需要gene bank對應的gene id為參數才能得到該ajax數據包。還是以T42934為例,當我們以URL=https://www.ncbi.nlm.nih.gov/nuccore/T42934.1?report=fasta來搜索數據時發現爬蟲返回的html文件不包含我們需要的數據,真正的數據是以圖五.2的動態數據加載而來,請求URL如圖中所示。因此我們需要先從gene bank 獲取對應的gene id 再搜索數據。

圖四
圖五? .1?
圖五 .2??

爬蟲開始爬取基因序列之前需要知道自己要爬取哪些基因,本人默認爬蟲讀取’C:/temp’路徑下的list.xlsx文件以獲取需要爬取的基因,該list.xlsx默認第一列填寫基因名,無header。腳本獲取數據函數如圖六所示

圖六

獲取genebank 對應id函數如下圖七

圖七

獲取gene id對應序列fasta格式文件如圖八

圖八

四、參考資料

CSDN 爬蟲爬取動態加載網頁

CSDN NCBI上爬取品種信息

Python道長—爬蟲入門到實踐

IT私塾 python爬蟲編程基礎五天速成

圖靈學院python爬蟲教程

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,530評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,407評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,981評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,759評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,204評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,415評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,955評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,650評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,892評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,675評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容