##pyhon代码格式根据tab缩进判断代码块嵌套,注意缩进格式
##python爬虫有常用的包(BeautifulSoup)用来解析HTML格式,一般通过标签提取信息。这里我直接强制转为字典格式输出了。
import json
import requests
##打开输入文件(按行读取)
f=open('~/snplist.txt')
ls=[]
for line in f:
ls.append(line.replace('\n',''))
f.close()
##gwas catalog 为异步加载,直接打开源代码页(右键 View page source)无法获取需要的信息
##非异步加载的网页,一般直接查看源代码页即可获得需要的信息
##解决方法:开发者工具→XHR→Headers(提取网页链接,headers,查看网页数据格式)
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36'}
##创建字典用于储存多个SNP的查询信息,字典格式:键为SNP的rsid,值为查询获得的数据(字典,包括trait,pval,beta等键,可以根据查询需要自行添加)
total=dict()
##打开输出文件
l=open('output.txt','w',encoding='utf-8')
##写入header
l.write("rsid\ttrait\tpvalue\tbeta")
##进入查询循环
for snp in ls:
##观察查询页面的链接格式,用于循环
url = "https://rest.ensembl.org/variation/human/"+snp+"?content-type=application/json;phenotypes=1"
r=requests.get(url,headers)
##获取网页数据,转化为文本格式(格式一般为字典嵌套列表),观察该变量的格式找到需要输出的值,通过列表和字典的数据提取处理