利用python的selenium模块向Plant-mPLoc提交数据
流程一般步骤
首先我们对得到的序列预处理,然后进行信息的提取,包括利用正则表达式对序列号的获取,以便序列号和数据结果的匹配和每次向网页提交一条完整的序列,最后是结果的保存。
1.对数据的预处理
因为笔者使用的是ExPASy对核苷酸序列开发阅读框进行预测(偶然发现这个也可以=。=),得到的最有可能的开放阅读框的格式为(以得到的第一个为例)
> VIRT-87894:5’3’ Frame 2, start_pos=0
GLGPSMATMLSRANAVMNSEVHKTVLITGVSKGLGRALALEMAKRGHTII
GCSRTQDMLYSLQAELSSASSSHPGSNSSPDKHLFMSVDVKSNSSVEELA
HVVMEKKGVPDIIVNNAGTINKNNRIWEVPVEEFDGVIDTNVKGIANMLR
HFIPLMIEGKQGIIVNMSSGWGRSAAAQVAPYCASKWAIEGLTRSVAKEL
PSGIAIVALNPGVINTDMLASCFGNSASLYQAPEAWAPTAATMILNLTMA DNGASLTV
在每条FASTA格式的序列第一行后面加上他的序列号,中间以一个空格隔开。(如Unigene5868)
所以当时你获取数据的时候就该把序列号和序列一一对应,还好笔者当时就是这样做的,所以在后面构建目标文件的时候没费多大时间。这样你就构建一个目标文件,每条序列之间隔一行,隔几行也行,但是要保证隔开的行数都是一样的,等下正则匹配要用。这样我们这个流程就结束了,这样处理也方便我们后继的其他操作,如蛋白质理化性质的分析等,不用再重新整理。
2. 环境的配置
(python3.7 pycharm )的配置就不再这里详细阐述了,可以去看看别人的教程,selenium库的获取,在你配置好的环境情况下,windows窗口下输入 cmd,打开控制行界面,输入下面命令就行了。
pip install selenium
当然只有这个模块肯定是不行的,你还得需要相应的浏览器驱动,不同的浏览器驱动是不一样滴,具体步骤百度完全能行,这里可以参考一篇博客 1特别注意的是把驱动放入相应浏览器安装目录下,我选择的是火狐浏览器(‘C:\Program Files\Mozilla Firefox’)安装路径,然后将这个路径添加到环境变量中(path)。这就是主要的环境配置了,接下来就是一些详细的步骤了。
3.代码分析及流程思想
Selenium大量的运用于python自动化测试及爬虫中,在这里我们就不深究其底层原理,具体说明一下它的使用。它能够定位当前浏览页面的元素,从而对其进行一些如添加数据、点击、清除该元素内已添加的内容等,也就说能模仿人类对该网页进行的操作。常见一些操作及定位元素的方法2。
向网站提交数据具体包括三步:1.向输入框提交数据;2.点击提交按钮;3.等待网站服务器返回结果,并对结果进行保存。我们先尝试一下拿单独的一条序列进行测试,然后再推广到所有的序列中。
from selenium import webdriver
data = """> VIRT-87894:5'3' Frame 2, start_pos=0 Unigene5868
GLGPSMATMLSRANAVMNSEVHKTVLITGVSKGLGRALALEMAKRGHTII
GCSRTQDMLYSLQAELSSASSSHPGSNSSPDKHLFMSVDVKSNSSVEELA
HVVMEKKGVPDIIVNNAGTINKNNRIWEVPVEEFDGVIDTNVKGIANMLR
HFIPLMIEGKQGIIVNMSSGWGRSAAAQVAPYCASKWAIEGLTRSVAKEL
PSGIAIVALNPGVINTDMLASCFGNSASLYQAPEAWAPTAATMILNLTMA
DNGASLTV"""
browser = webdriver.Firefox() # 打开火狐浏览器 如果你环境没配置好 会报错
browser.get('http://www.csbio.sjtu.edu.cn/bioinf/plant-multi/')
# 在get()里面输入你要进入的网址 它会自动进入
# 进入目标网址后 把鼠标移入序列输入框 右键检查元素 浏览器下面会弹出一个
# 查看器 该元素会以高亮的颜色显示 我们发现该元素的 name属性值为"S1"
# 我们在查看器里 Ctrl + F 查找 "S1" 我们发现name="S1" 只有一个
# 这样就可以对输入框进行定位 同理的提交按钮的name属性值为 "B1"
input_box = browser.find_element_by_name("S1") # 通过name属性的值来定位输入框元素
input_box.send_keys(data)