python爬虫-爬取蛋白晶体和分子结构

文章目录

  • 前言
  • 一、环境准备
  • 二、爬取PDB蛋白结构
    • 1.下载指定数量的随机PDB
    • 2.下载指定靶标的PDB
  • 二、从ZINC爬取小分子mol2结构
    • 1.下载指定数量的随机分子
    • 2.下载指定分子
  • 三、从ChEMBL爬取小分子信息
    • 1.下载指定ID的SMILES(测试不成功,网站变成readonly了)
  • 四、总结爬虫
    • 1.查看对应的xpath
    • 2.同一页同类的多个对象的Xpath
  • 总结


前言

最近觉得自己下载数据很麻烦,所以决定实践爬虫进行相关数据的下载,将所学内容总结如下:


一、环境准备

安装谷歌浏览器:https://www.google.cn/intl/zh-CN/chrome/next-steps.html?statcb=1&installdataindex=empty&defaultbrowser=0
检查安装的谷歌浏览器的版本:在这里插入图片描述在这里插入图片描述

安装对应版本的驱动器:https://googlechromelabs.github.io/chrome-for-testing/
在这里插入图片描述
安装爬虫需要的库:

pip install lxml
pip install selenium

二、爬取PDB蛋白结构

1.下载指定数量的随机PDB

import urllib.request
import urllib
import os
import time
import random
import datetimefrom selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Servicet1 = datetime.datetime.now()chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
headers = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.59 Safari/537.36'output = 'protein/'try:os.mkdir(output)
except FileExistsError:passs = Service('chromedriver.exe')
driver = webdriver.Chrome(service=s, options=chrome_options)class Spider:def __init__(self,numbers,fmt):self.numbers = numbersself.fmt = fmt# 方法def download_protein(self):num_str = '1 2 3 4 5 6 7 8 9'num_list = num_str.split()letters = '1 2 3 4 5 6 7 8 9 0 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'letter_list = letters.split()letter_list = [s.upper() for s in letter_list]num = 1for i in range(1,self.numbers):A = random.choice(num_list)B = random.choice(letter_list)C = random.choice(letter_list)D = random.choice(letter_list)ABCD = A + B + C + DPDBID = "".join(ABCD)url = 'https://files.rcsb.org/download/' + PDBID + '.pdb'try:request = urllib.request.Request(url=url)response = urllib.request.urlopen(request)data = response.read()except urllib.error.HTTPError as e:passexcept urllib.error.URLError as e:passelse:f = open(output + url[url.find('download')+9:],'wb')f.write(data)f.close()print('正在下第{0}个{1}格式的蛋白质{2}'.format(str(num),self.fmt,PDBID))time.sleep(random.randint(1,3))num = num + 1spider = Spider(numbers=10,fmt='pdb')
spider.download_protein()
driver

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/57867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AMD锐龙8845HS+780M核显 虚拟机安装macOS 15 Sequoia 15.0.1 (2024.10)

最近买了机械革命无界14X,CPU是8845HS,核显是780M,正好macOS 15也出了正式版,试试兼容性,安装过程和之前差不多,这次我从外网获得了8核和16核openCore,分享一下。 提前发一下ISO镜像地址和open…

JavaScript完整笔记

JS引入 JavaScript 程序不能独立运行,它需要被嵌入 HTML 中,然后浏览器才能执行 JavaScript 代码。 通过 script 标签将 JavaScript 代码引入到 HTML 中,有两种方式: 内部方式 通过 script 标签包裹 JavaScript 代码 我们将 &…

安装Maven配置以及构建Maven项目(2023idea)

一、下载Maven绿色软件 地址:http://maven.apache.org/download.cgi 尽量不要选择最高版本的安装,高版本意味着高风险的不兼容问题,选择低版本后续问题就少。你也可以选择尝试。 压缩后: 打开后: 在该目录下新建mvn-…

SQLite 3.47.0 发布,大量新功能来袭

SQLite 开发团队于 2024 年 10 月 21 日发布了 SQLite 3.47.0 版本,我们来了解一下新版本的改进功能。 触发器增强 SQLite 3.47.0 版本开始,触发器函数 RAISE() 的 error-message 参数可以支持任意 SQL 表达式。在此之前,该参数只能是字符串…

SQL注入之sqlilabs靶场21-30题

重点插入:html表 第二十一题 分析过程:(没有正确的账号密码是否能拿到Cookie?最后注释好像只能使用#,--好像无法注释) 查看源码 这里输入账号密码处被过滤了 但Cookie被base64编码了 可以从Cookie入手 …

vue2结合echarts实现数据排名列表——前端柱状进度条排行榜

写在前面,博主是个在北京打拼的码农,工作多年做过各类项目,最近心血来潮在这儿写点东西,欢迎大家多多指教。 数据排名列表——图表开发,动态柱状图表,排名图 UI 直接搜到类似在线代码(数据列表…

多线程——线程池

目录 前言 一、什么是线程池 1.引入线程池的原因 2.线程池的介绍 二、标准库中的线程池 1.构造方法 2.方法参数 (1)corePoolSize 与 maximumPoolSize (2)keepAliveTime 与 unit (3)workQueue&am…

Redis集群分片存储最佳实践,手把手搭建Redis集群

目录 一、Redis集群介绍1、设计目标2、为什么需要分片存储 二、官网集群方案三、搭建集群1、准备6个独立的Redis服务2、通过redis-cli工具创建集群3、检验集群4、集群重新分片5、故障转移测试6、集群扩容7、集群节点删除 四、集群关心的问题五、集群功能限制 一、Redis集群介绍…

蓝桥杯题目理解

1. 一维差分 1.1. 小蓝的操作 1.1.1. 题目解析: 这道题提到了对于“区间”进行操作,而差分数列就是对于区间进行操作的好方法。 观察差分数列: 给定数列:1 3 5 2 7 1 差分数列:1 2 2 -3 5 6 题目要求把原数组全部…

基于SpringBoot的高校体测管理系统设计与实现(源码+定制+开发)高校体测记录系统设计、高校体测信息管理平台、智能体测管理系统开发、高校体测记录系统设计

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

25届电信保研经验贴(自动化所)

个人背景 学校:中九 专业:电子信息工程 加权:92.89 绩点:3.91/4.0 rank:前五学期rank2/95,综合排名rank1(前六学期和综合排名出的晚,实际上只用到了前五学期) 科研…

海外云手机实现高效的海外社交媒体营销

随着全球化的深入发展,越来越多的中国企业走向国际市场,尤其是B2B外贸企业,海外社交媒体营销已成为其扩大市场的重要手段。在复杂多变的海外市场环境中,如何有效提高营销效率并降低运营风险,成为了众多企业的首要任务。…

路由器 相关知识

一、路由器是什么 参考:图解系列--路由器和它庞大的功能_路由功能-CSDN博客 路由器是指:主要负责 OSI参考模型中网络层的处理工作,并根据路由表信息在不同的网络 之间转发IP 分组的网络硬件(图3-1)。这里的网络一般是指IP 子网,…

Java基础(7)图书管理系统

目录 1.前言 2.正文 2.1思路 2.2Book包 2.3people包 2.4operation包 2.5主函数 3.小结 1.前言 哈喽大家好吖,今天来给前面Java基础的学习来一个基础的实战,做一个简单的图书管理系统,这里边综合利用了我们之前学习到的类和对象&…

爬虫ip技术未来发展趋势

各位朋友,大家好!有伙伴问爬虫技术未来会有更好的发展么,那今天小蝌蚪来跟大家聊聊爬虫技术未来的发展趋势分享一下行业咨询。 大家在日常工作和生活中,都希望事情能更省心、高效吧?未来的爬虫技术就朝着这个方向发展…

sheng的学习笔记-AI基础-正确率/召回率/F1指标/ROC曲线

AI目录:sheng的学习笔记-AI目录-CSDN博客 分类准确度问题 假设有一个癌症预测系统,输入体检信息,可以判断是否有癌症。如果癌症产生的概率只有0.1%,那么系统预测所有人都是健康,即可达到99.9%的准确率。 但显然这样的…

在Keil调试内存中的程序

在Keil调试内存中的程序 目录 在Keil调试内存中的程序1. 问题引出2. 测试工程3. 工程和Keil配置 实验环境: MCU:STM32F103C8T6 (Flash 64K RAM 20K)Keil:uVision V5.27.0.0仿真器:ST-Link 参考源码:https://download.c…

Redis 集群 总结

前言 相关系列 《Redis & 目录》(持续更新)《Redis & 集群 & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Redis & 集群 & 总结》(学习总结/最新最准/持续更新)《Redis & 集群…

导出问题处理

问题描述 测试出来一个问题,使用地市的角色,导出数据然后超过了20w的数据,提示报错,我还以为是偶然的问题,然后是发现是普遍的问题,本地环境复现了,然后是,这个功能是三套角色&…

ESP32-S3学习笔记:常用的ESP-IDF命令总结

参考资料:1.esptool.py工具 2.idf.py工具 后续文章的讲解需要用到IDF命令行工具,当前文章简单介绍一下。 目录 打开命令行的小技巧 一、读flash信息 二、擦除flash 三、读flash数据 四、写flash数据 打开命令行的小技巧 大家安装完IDF开发包后…