本文主要是自己的線上代碼筆記。在生物醫學本體ontology建構過程中,我使用selenium定向爬取生物醫學pubmed資料庫的内容。
pubmed是一個免費的搜尋引擎,提供生物醫學方面的論文搜尋以及摘要。它的資料庫來源為medline(生物醫學資料庫),其核心主題為醫學,但亦包括其他與醫學相關的領域,像是護理學或者其他健康學科。它同時也提供對于相關生物醫學資訊上相當全面的支援,像是生化學與細胞生物學。
pubmed是網際網路上使用最廣泛的免費medline,該搜尋引擎是由美國國立醫學圖書館提供,它是基于web的生物醫學資訊檢索系統,它是ncbi
entrez整個資料庫查詢系統中的一個。pubmed界面提供與綜合分子生物學資料庫的連結,其内容包括:dna與蛋白質序列,基因圖資料,3d蛋白構象,人類孟德爾遺傳線上,也包含着與提供期刊全文的出版商網址的連結等。
實作代碼
實作的代碼主要是selenium通過分析網頁dom結點進行爬取。
在網址中搜尋protein(蛋白質)後,分析網址可發現設定page=1~20可爬取前1~20頁的url資訊。連結如下:
分析html
1.擷取每頁page中的20個關于protein(蛋白質)的url連結和标題。其中geturl()函數中的核心代碼擷取url如下:
url = driver.find_elements_by_xpath("//div[@id='div_data']/div/div/h3/a")
url_content = url.get_attribute("href")
getabstract(num,title,url_content)

2.再去到具體的生物文章頁面擷取摘要資訊
其中你可能遇到的錯誤包括:
1.error: 'ascii' codec can't encode character u'\u223c'
它是檔案讀寫編碼錯誤,我通常會将open(filename,"w")改為codecs.open(filename,'w','utf-8') 即可。
2.第二個錯誤如下圖所示或如下,可能是因為網頁加載或connection傳回close導緻
webdriverexception: message: error message => 'url ' didn't load. error: 'typeerror: 'null' is not an object
運作結果
得到的運作結果如下所示:00001.txt~00400.txt共400個txt檔案,每個檔案包含标題和摘要,該資料集可簡單用于生物醫學的本體學習、命名實體識别、本體對齊建構等。
ps:最後也希望這篇文章對你有所幫助吧!雖然文章内容很簡單,但是對于初學者或者剛接觸爬蟲的同學來說,還是有一定幫助的。同時,這篇文章更多的是我的個人線上筆記,簡單記錄下一段代碼,以後也不會再寫selenium這種簡單的爬取頁面的文章了,更多是一些智能動态的操作和scrapy、python分布式爬蟲的文章吧。如果文中有錯誤和不足之處,還請海涵~昨天自己生日,祝福自己,老師夢啊老師夢!!!