29

用R语言的RCurl包结合XML包批量下载生信课件

首先是宾夕法尼亚州立大学(The Pennsylvania State University缩写PSU)的生信课件下载,这个生信不仅有课件,而且在中国的优酷视频网站里面还有全套授课视频,非常棒!

image001

课程主页是http://www.personal.psu.edu/iua1/courses/2013-BMMB-597D.html

可以看出所有的课件pdf链接都在这一个页面,所以是非常简单的代码!

下面是R代码:

library(XML)

library(RCurl)

library(dplyr)

psu_edu_url='http://www.personal.psu.edu/iua1/courses/2013-BMMB-597D.html';

wp=getURL(psu_edu_url)

base='http://www.personal.psu.edu/iua1/courses/file';

#pse_edu_links=getHTMLLinks(psu_edu_url)

psu_edu_links=getHTMLLinks(wp)

psu_edu_pdf=psu_edu_links[grepl(".pdf$",psu_edu_links,perl=T)]

for (pdf in psu_edu_pdf){

down_url=getRelativeURL(pdf,base)

filename=last(strsplit(pdf,"/")[[1]])

cat("Now we down the ",filename,"\n")

#pdf_file=getBinaryURL(down_url)

#FH=file(filename,"wb")

#writeBin(pdf_file,FH)

#close(FH)

download.file(down_url,filename)

}

因为这三十个课件都是接近于10M,所以下载还是蛮耗时间的

image003

其实R语言里面有这个down_url函数,可以直接下载download.file(down_url,filename)

然后我开始下载德国自由大学的生信课件,这次不同于宾夕法尼亚州立大学的区别是,课程主页里面是各个课题的链接,而pdf讲义在各个课题里面,所以我把pdf下载写成了一个函数对我们的课题进行批量处理

library(XML)

library(RCurl)

library(dplyr)

base="http://www.mi.fu-berlin.de/w/ABI/Genomics12";

down_pdf=function(url){

links=getHTMLLinks(url)

pdf_links=links[grepl(".pdf$",links,perl=T)]

for (pdf in pdf_links){

down_url=getRelativeURL(pdf,base)

filename=last(strsplit(pdf,"/")[[1]])

cat("Now we down the ",filename,"\n")

#pdf_file=getBinaryURL(down_url)

#FH=file(filename,"wb")

#writeBin(pdf_file,FH)

#close(FH)

download.file(down_url,filename)

}

}

down_pdf(base)

list_lecture= paste("http://www.mi.fu-berlin.de/w/ABI/GenomicsLecture",1:15,"Materials",sep="")

for ( url in list_lecture ){

cat("Now we process the ",url ,"\n")

try(down_pdf(url))

}

image005

同样也是很多pdf需要下载

接下来下载Minnesota大学的关于生物信息的教程的ppt合集

主页是: https://www.msi.umn.edu/tutorial-materials

 

这个网页里面有64篇pdf格式的ppt,还有几个压缩包,本来是准备写爬虫来爬去的,但是后来想了想有点麻烦,而且还不一定会看,反正也是玩玩

就用linux的命令行简单实现了这个爬虫功能。

curl https://www.msi.umn.edu/tutorial-materials >tmp.txt

perl -alne '{/(https.*?pdf)/;print $1 if $1}' tmp.txt >pdf.address

perl -alne '{/(https.*?txt)/;print $1 if $1}' tmp.txt

perl -alne '{/(https.*?zip)/;print $1 if $1}' tmp.txt >zip.address

wget -i pdf.address

wget -i pdf.zip

这样就可以啦!

 

用爬虫也就是几句话的事情,因为我已经写好啦下载函数,只需要换一个主页即可下载页面所有的pdf文件啦!

 

21

美国Minnesota大学的生信全套课件分享

刚才在知乎什么看到了一篇分享pacbio的数据特征,顺便看到了Minnesota大学的关于生物信息的教程的ppt合集,所以就想打包下载。

https://www.msi.umn.edu/tutorial-materials

这个网页里面有64篇pdf格式的ppt,还有几个压缩包,本来是准备写爬虫来爬去的,但是后来想了想有点麻烦,而且还不一定会看,反正也是玩玩
就用linux的命令行简单实现了这个爬虫功能。
curl https://www.msi.umn.edu/tutorial-materials >tmp.txt
perl -alne '{/(https.*?pdf)/;print $1 if $1}' tmp.txt >pdf.address
perl -alne '{/(https.*?txt)/;print $1 if $1}' tmp.txt
perl -alne '{/(https.*?zip)/;print $1 if $1}' tmp.txt >zip.address
wget -i pdf.address
wget -i pdf.zip
这样就可以啦!
教程ppt列表如下,大家有兴趣的可以自行下载浏览。

2009-04-22-mrm-presentation_0.pdf               Matlab_viz_image_UMR.pdf
Analyzing ChIP at the command line.pdf          MaxQuant_Introduction_112409.pdf
Analyzing ChIP using Galaxy.pdf                 Maxquant-step-by-step_rs091124.pdf
Badalamenti_PacBio_tutorial_12-10-2014.pdf      MSI Applications Catalog Oct 21 MB slides.pdf
basics_chip_seq.pdf                             MSIIntro2013Jun18.pdf
Best_Practices_GATK_Variant_Detection_v1_0.pdf  MSIIntroBMEN5311.pdf
blast2go.pdf                                    MSI_Workshop_for_Introduction_to_Structure_based_Drug_Design.pdf
ClinProTools_0.pdf                              MTLB_GPUs.pdf
CUDA_Programming.pdf                            OpenMP.tutorial_1.pdf
cuda_tutorial_performance.pdf                   Open_Source_Proteomics_1.pdf
FLUENT_2009April21_final.pdf                    OptimizingWithGA.pdf
FLUENT_tutorial_2008aug14fin.pdf                Orbi_Data_Analysis_092811.pdf
galaxy_101_V4_ljm_0.pdf                         Partek Training Handout_miRNA and mRNA Data Analysis.pdf
GPU_tools.pdf                                   PerformanceTuning_itasca_11_27_12_0.pdf
gpututorial-msi.pdf                             PETSc_Tutorial.pdf
Hands_On_Tutorial_Using_ProTIP.pdf              Phi_Intro.pdf
Introduction to MSI Systems.pdf                 Protein_Grouping_FDR_Analysis_and_Database_Pratik_March2012_Draft.pdf
Introduction_to_PEAKS_0.pdf                     Proteomics_MSI_072309_Print.pdf
Introduction_to_SBDD.pdf                        pymol_v5.pdf
IntroMPI2011july19c.pdf                         QC_illumina_galaxy_V1_ljm.pdf
IntroMPI2012_July25-part1.pdf                   Quality Control of Illumina Data at the Command Line.pdf
IntroMSI2014.pdf                                remotevisualization.pdf
IntroNWChem.pdf                                 RISS_Hsapiens_variant_Detection_v3.0-small.pdf
IntroOpenMP_2011jun28b.pdf                      RNA_seq_Lecture2_2014_v2.pdf
Intro_to_GAMESS.pdf                             RNA-Seq mod1v6.pdf
IntroToGaussian09.pdf                           R_Spring2012_ver2.pdf
introtomolpro.pdf                               SchrodingerTutorial2011.pdf
Intro_to_MSI_Physicists.pdf                     Sybyl.pdf
intro-to-perl.pdf                               Tutorial-Hsap-v15.pdf
Matlab_11_29_UMR.pdf                            Tutorial-Stuber-v12-1.pdf
Matlab_PCT.pdf                                  unix2013.6.18.pdf
MATLAB_Tuning.pdf                               WRKSP_2_19.pdf

Total wall clock time: 40m 22s
Downloaded: 64 files, 249M in 40m 2s (106 KB/s)

我都已经下载好了,打包压缩到群里面啦!

18

生信常用论坛seq-answer里面所有帖子爬取

生信常用论坛seq-answer里面所有帖子爬取

这个是爬虫专题第二集,主要讲如何分析seq-answer这个网站并爬去所有的帖子列表,及标签列表等等,前提是读者必须掌握perl,然后学习perl的LWP模块,可以考虑打印那本书读读,挺有用的!

其实爬虫是个人兴趣啦,跟这个网站没多少关系,本来一个个下载,傻瓜式的重复也能达到目的。我只是觉得这样很有技术范,哈哈,如何大家不想做傻瓜式的操作可以自己学习学习,如果不懂也可以问问我!

http://seqanswers.com/这个是主页

http://seqanswers.com/forums/forumdisplay.php?f=18 这个共570个页面需要爬取

其中f=18 代表我们要爬去的bioinformatics板块里面的内容

http://seqanswers.com/forums/forumdisplay.php?f=18&order=desc&page=1

http://seqanswers.com/forums/forumdisplay.php?f=18&order=desc&page=570

<tbody id="threadbits_forum_18">这个里面包围这很多<tr>对,

前五个<tr>对可以跳过,里面的内容不需要

Continue reading

18

生信常用论坛bio-star里面所有帖子爬取

生信常用论坛bio-star里面所有帖子爬取

这个是爬虫专题第一集,主要讲如何分析bio-star这个网站并爬去所有的帖子列表,及标签列表等等,前提是读者必须掌握perl,然后学习perl的LWP模块,可以考虑打印那本书读读,挺有用的!

http://seqanswers.com/ 这个是首页

http://seqanswers.com/forums/forumdisplay.php?f=18 这个共570个页面需要爬取

http://seqanswers.com/forums/forumdisplay.php?f=18&order=desc&page=1

http://seqanswers.com/forums/forumdisplay.php?f=18&order=desc&page=570

<tbody id="threadbits_forum_18">这个里面包围这很多<tr>对,

前五个<tr>对可以跳过,里面的内容不需要

生信常用论坛bio_star462

Continue reading