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…

Flink Rest API

REST API | Apache Flink Flink官网API 通过curl 或者Rest API工具测试web UI对应的接口返回信息 Flink 提交yarn任务 ./bin/flink run -t yarn-per-job historyServer ../bin/historyserver.sh start

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入手 …

【Flutter】页面布局:弹性布局(Flex)

在 Flutter 开发中,布局是非常重要的部分。布局系统允许开发者控制和管理界面上的组件如何排列和展示。弹性布局(Flex)是其中一个非常强大且常用的布局组件,它能够在水平方向或垂直方向上灵活调整子组件的空间分配比例。Row 和 Co…

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

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

javascript实现aes算法(支持微信小程序)

概述: 本代码是本人从c代码上转换成的javascript代码,并测试验证通过的。代码比较长1000多行,考虑放其他地方要么要会员要么容易关闭,不容易被需要的获取到,故直接贴在本文档下面的章节,功能代码。 测试平…

RK3568 android11 usb接口TP与电磁笔触点上报优先级问题

一,问题描述 双USB接口,电容触摸跟电磁手写笔触摸会产生误触现象,所以需要在底层实现电磁笔优先级。 电磁屏优先(指当笔和手都放屏上,手不发信息),因为都是USB接口使用,电容触摸跟电…

ubuntu22.04安装qemu-9.1并在i.MX6上运行linux kernel 6.11

1. qemu-stable-9.1源码编译安装 1.1. 下载qemu源码的stable-9.1分支 仓库地址 mkdir qemu_9.1 cd qemu_9.1 git clone https://gitlab.com/qemu-project/qemu.git --branchstable-9.1 --depth5 git submodule update --init --recursive cd qemu1.2. 安装依赖 参考文档 s…

多线程——线程池

目录 前言 一、什么是线程池 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集群介绍…

第11天理解指针

目录 数组指针 指针数组 字符指针数组 二维字符数组 const 修饰变量为常量 指针常量 常量指针 typedef 重命名数据类型 关于typedef的一般理解 具体示例分析 复杂示例分析 总结回顾--指针的奥秘:深入理解内存地址与数据存储 一、指针的本质 二、地址类…

使用Python实现智能火山活动监测模型

一、引言 火山爆发是自然界最具破坏力的事件之一,其对人类的影响可以从气候、空气质量到生命安全等多个方面产生深远影响。传统的火山监测依赖地质学家在现场采集数据,而现代科技的发展让远程监测成为可能。通过深度学习和数据分析技术,我们可以使用Python构建一个智能火山…

蓝桥杯题目理解

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

C++[CSP-J 2023] 公路讲解

题目&#xff1a;2023CSP-J公路 思路&#xff1a;贪心 我们可以在草稿纸上列一列&#xff0c;滤清思路&#xff0c;这道题没什么难度的&#xff01; 代码&#xff1a; #include<bits/stdc.h> using namespace std; long long n,d,a[100005],v[100005],s[10005],id1; …

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

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

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

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

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

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