告诉我你是不是很想爬取COSMIC数据库?

2019-06-19 求臻医学企宣

小编已经从原始的perl代码转到python的大部队中,越深入就越觉得python的强大。顺便说一句小编自我经验关于学习一门编程语言的最好方式不是要看多少书,而是在解决问题中不断成长提高。




对于一个COSMIC数据库的变异往往注释信息如下:




COSM5424184被认定为一个snp:




求臻医学


COSM2240643不被认定为一个somatic位点:



求臻医学


COSM3677745被认定是一个somatic突变:



求臻医学


OK,问题来了对于一个cosmicID我想获得Ever confirmed somatic?(Yes or No)的结果甚至还是一个确定的SNP位点。闲言碎语不多讲直接上代码:


import requests

from bs4 import BeautifulSoup

import re

id=input("please input COSMIC ID(e.g:COSM3677745):")

pattern=re.compile(r'\d+')

num=pattern.findall(id)

url="https://cancer.sanger.ac.uk/cosmic/mutation/overview?genome=37&id=%s" %(num[0])

res=requests.get(url)

ret = res.text

soup=BeautifulSoup(ret,'html.parser')

dbsnp=soup.find_all(text=re.compile("has been flagged as a SNP."))

dt = soup.find_all('dt')

dd = soup.find_all('dd')

for i in range(len(dt)):

    if dt[i].string == "Ever confirmed somatic?":

        print("%s\t%s" % (id, dd[i].string))

if dbsnp!=[]:

    print("%s\tSNP" % (id))



最后命令行运行:




Python3 test.py

Please input COSMIC ID(e.g:COSM3677745):COSM3677745

COSM3677745    Yes



怎么样,是不是很简单。