生物信息学:根据PDB名称、爬虫PDB数据库的信息、保存到Excel里

毕设要统计蛋白质的信息,就写了个小脚本。
把PDB里的编号写到pdbselected里、我本来想做成根据蛋白质直接搜索到编号的,发现居然有反爬…只能先写成这个了…
具体爬的是哪个位置、建议自己在开发者模式里的自己搜索一下康康。
分两个文件,第一个文件是得到感兴趣的蛋白质的名字

from selenium import webdriver
import xlwt
import random
import time

driver=webdriver.Chrome(r'E:\Chrome\Application\chromedriver.exe')
url="http://www1.rcsb.org"
driver.get(url)

#开始自己整理网页 然后搜索 你感兴趣的蛋白质,点击搜索 出现页面之后

time.sleep(random.uniform(1, 3))

xpath="//*[@class='results-item']" #这个就是所有的搜索 
contains=driver.find_elements_by_xpath(xpath)
#如果是多页的话也可以点击下一页 然后在python终端重复以上两个步骤,用:
#xpath="//*[@class='results-item']"
#contains_temp=driver.find_elements_by_xpath(xpath)
#contains=contains+contains_temp

work_book=xlwt.Workbook()
work_sheet = work_book.add_sheet("data")
j=0

for contain in contains:
    list_contain=contain.text.split("\n")
    for i in range(len(list_contain)):
        work_sheet.write(j, i, list_contain[i])
    j+=1

work_book.save('PDB_search.csv')

第二个文件 是根据第一步得到的名字 组合得到网址 然后爬虫得到 想要的内容

from selenium import webdriver
import xlwt
import random
import time
import re
driver=webdriver.Chrome(r'E:\Chrome\Application\chromedriver.exe')
#这里自己改
pdbselected=\
["6VCA",
"6VC9",
"6TVG",
"6TVX",
"6TW0",
"6TWA",
"6TWF",
"6XUQ",
"6XUE",
"6XUG",
"7JV8",
"7JV9",
"6YE2",
"6YE1",
"4H1S",
"6Z9B",
"6Z9D",
"3ZU0",
"6TVE",
"6HXW",
"6S7F",
"6S7H",
"4H2I",
"4H2B",
"3ZTV",
"4H2F",
"4H2G",
"4H1Y",
"4CD1",
"4CD3"]


work_book=xlwt.Workbook()
work_sheet = work_book.add_sheet("data")

for i in range(len(pdbselected)):
    time.sleep(random.uniform(1,3))
    url = 'http://www1.rcsb.org/structure/'+str(pdbselected[i])
    driver.get(url)
	
	#这里可以根据需要自己设定爬虫的xpath
    contain=driver.find_element_by_xpath("//*[@id='exp_header_0_snapshot']")
    contain_2=driver.find_element_by_xpath("//*[@class='list-unstyled']")
    #高分子含量
    contain_3=driver.find_element_by_xpath("//*[@id='macromoleculeContent']")
    #分子的其他信息
    contain_4=driver.find_element_by_xpath("//*[@id='macromolecule-entityId-1-rowDescription']")


	#把contain里爬到的模块的text分割
    ListOfContain=re.split("[\n:]", contain  .text)
    ListOfContain_2=  re.split("[\n:]", contain_2.text)
    ListOfContain_3 =   re.split("[\n:]", contain_3.text)
    ListOfContain_4 =   re.split("[\n: ]", contain_4.text)


    #合并list
    ListOfContain=ListOfContain+ListOfContain_2+ListOfContain_3+ListOfContain_4

    #先输入名字
    work_sheet.write(i, 0, pdbselected[i])
    for j in range(len(ListOfContain)):
        work_sheet.write(i, j+1, ListOfContain[j])

work_book.save('test.csv')


  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值