前一阵子爬了俩fusion相关的网站,今天有兄弟问爬虫相关知识,其实小姐姐也是爬虫菜鸟,好在我们生信相关的网站都不复杂,没有什么需要模拟登陆、socket解析这种(大概做生物网站的大佬们的目的也是为了show数据,技术控志不在此)。所以特别复杂的爬虫技术我也是不会,就是日常应用便是爬取网页数据,在线数据检索/对比,仅此而已。最近也有在学习啦,后期会陆续更新爬虫自助下载什么的,这个不得不说,很多R包真心比爬虫容易多了功能还多,比如一会就要分享一个怎么用R包一条命令下载TCGA数据的。
OK,感谢理解我碎碎念,这篇用Python爬取TCGA数据,主要分三部分1、地址解析;2、爬虫入门;3、比爬虫更有意思的R包
1、TCGA的地址解析很容易,没有嵌入,无需审查元素分析源码(吐槽tumorfusion,要不是本宝宝机智,差点就要模拟登陆了,最后还是在审核元素里发现了猫腻,真心地遇到耍小心机的网站,审核元素太有用了,以后用到再讲吧),可以直接获取地址,因为他是“https://portal.gdc.cancer.gov/projects/TCGA-BRCA”介个样子的,太容易解析了有米有。
定量域名:https://portal.gdc.cancer.gov/projects/,变量:gene1=TCGA,gene2=BRCA
首先导入Python相关的包了,与爬虫相关的只有http和bs4,我列这么多是因为后期肯定还要对爬取内容进行文本分析比对啥的(我用的是Python3,Python2导入与HTML相关的包还是有区别的)
我是用的Linux系统,Windows的宝宝建议还是装个pycharm,下面的R包运行建议在Rstudio里面运行(纯粹个人建议,喜欢其他的甚至直接文本编辑也是非常推荐的哟!)
Python和pycharm安装传送门:https://www.cnblogs.com/shizhijie/p/7768973.html
import re
import sys
import numpy
import os
import mechanize
from http import cookiejar
from bs4 import BeautifulSoup
import requests
2、爬虫入门,
只需五行Python代码,没错,五行代码即可顺利实现。话不多说,直接上干货,就这一个函数,可以获取检索页面所有内容,简单到炸
def gethtml(gene1,gene2):
proxies = {
"http": "http://121.201.24.248:8088",
}
url='https://portal.gdc.cancer.gov/projects/'+gene1+'-'+gene2
headers = {"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9","User-A
gent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.16 Safari/537.36"}
res = requests.get(url,headers=headers,verify=False).text
print(res)
后面就是根据需要调用函数了,比如我会直接对爬取内容进行数据检索或者对比。
这个真心需要有一点点Python基础,一点点就够。。。
最简单的,调用函数可以直接,其他的可以分析函数调用咯
gethtml("TCGA","BRCA")
如果不想学Python,没关系,还有更简单的,直接上R,请看下文。
3、比爬虫更有意思的R包
R包真的是生信大牛的技术体现,我还在膜拜阶段,比如clusterprofiler, created by yuguangchuang,容我膜拜三秒。。。。
R安装问题,请移步:https://blog.csdn.net/panrenlong/article/details/100835323
RTCGAToolbox这个R语言包就是神一般的存在呀。RTCGAToolbox是Bioconductor上的一个软件包,它的作用就是查询、下载和组织TCGA Firehose的数据,还提供一些简单的数据分析和可视化工具。
1) RTCGAToolbox安装,借助BiocManager安装,前提也是你要安装好BiocManager,命令如下:
BiocManger::install("RTCGAToolbox")
没装BiocManager?试试
biocLite("RTCGAToolbox")
2)加载该包
library(RTCGAToolbox)
3)查看所包含的数据集(癌症简称)
getFirehoseDatasets()
结果如下:
4)查看版本号命令
getFirehoseRunningDates()
结果如下:
5)数据下载,dataset是癌症名称(这里以乳腺癌为例),runDate是数据版本,就是刚刚查到的,还可以有其他如RNAseq等选项。
brcaData = getFirehoseData (dataset="READ", runDate="20160128",forceDownload = TRUE,
Clinic=TRUE, Mutation=TRUE)
下载过程如下(各地下载速度不一样):
ps:如果出现raw.github无法连接的报错,一般是当地网段延迟,多试几次就好了(偷偷怀疑限速了),比如我们实验室,我整整试了五次才连上开始下载,报错不可怕,关于网上改sudo配置的问题,额。。。实验室服务器怎么可能让你sudo,放弃吧,反正我是试了很多次就成功了,报错截图如下: