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 datetime

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service


t1 = 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:
  pass

s = Service('chromedriver.exe')
driver = webdriver.Chrome(service=s, options=chrome_options)

class Spider:
  def __init__(self,numbers,fmt):
    self.numbers = numbers
    self.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 = 1
    for 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 + D
      PDBID = "".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:
        pass
      except urllib.error.URLError as e:
        pass
      else:
        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 + 1

spider = Spider(numbers=10,fmt='pdb')
spider.download_protein()
driver

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Vue】Vue3.0(十)toRefs()和toRef()的区别及使用示例

上篇文章:Vue】Vue(九)OptionsAPI与CompositionAPI的区别 🏡作者主页:点击! 🤖Vue专栏:点击! ⏰️创作时间:2024年10月15日11点13分 文章目录 toRefs()和toRe…

生成模型初认识

生成模型初认识 参考学习资料:李宏毅-机器学习 以下为课程过程中的简易笔记 生成模型 为什么要用生成模型?——创造力:同一个输入,产生不同的输出(distribution),有一定概率发生某种随机事件…

2024 OSCAR|《开源体系建设路径模式洞察与建议》即将发布

近年来,开源体系建设受到高度重视,国家软件发展战略和“十四五”规划纲要均对开源作出重要部署,为我国开源体系建设和发展指明了方向。9月25日,工业和信息化部党组书记、部长金壮指出要加强开源体系建设,助推产业高质量…

大语言模型(LLM)入门级选手初学教程

链接:https://llmbook-zh.github.io/ 前言: GPT发展:GPT-1 2018 -->GPT-2&GPT-3(扩大预训练数据和模型参数规模)–> GPT-3.5(代码训练、人类对齐、工具使用等)–> 2022.11 ChatG…

c++初阶--string类(使用)

大家好,许久不见,今天我们来学习c中的string类,在这一部分,我们首先应该学习一下string类的用法,然后再试着自己去实现一下string类。 在这里,我使用的是这个网站来查找的string类,这里面的内容…

mysql--基本查询

目录 搞定mysql--CURD操作,细节比较多,不难,贵在多多练 1、Create--创建 (1)单行插入 / 全列插入 (2)插入否则替换 (3)替换 2、Retuieve--select 1)全…

Android系統Audio hal

一.Android系統Audio hal简介 Android系统的音频硬件抽象层(HAL)是系统与硬件之间的桥梁,允许音频应用和服务访问底层音频硬件,而无需直接与硬件交互。 主要组件: 音频 HAL 接口:定义了应用和服务如何调用音频硬件的规范。典型的音频操作包括播放、录制、音量控制等。 …

day5:权限管理

一,权限概述 什么是权限 合适的人干合适的事情 权限的作用 根据用户的等级,分配对应的权利,完成不同用户对不同资源的相关操作。 权限的分类 r(4)读w(2)写x(1)执行 …

深入理解Agent:从0实现function call

Function的调用时Agent实现很重要的一步,只有 理解了function call这个原理才可以更好的创建Agent。 我将不使用任何langchain等框架或者coze等平台,从0开始构建一个可以调用function的Agent。 源代码已经上传github:https://github.com/as…

美摄科技云服务解决方案,方案成熟,接入简单

美摄科技作为视频处理领域的先锋,凭借其强大的技术实力和深厚的行业经验,推出了成熟的云服务解决方案,为轻量化视频制作开辟了全新的道路。 一、成熟方案,接入无忧 美摄科技云服务解决方案的最大亮点在于其成熟度和易用性。我们…

(六) 进程控制

(六) 进程控制 ps(1) 命令可以帮助我们分析本章中的一些示例,所以简单介绍一些参数的组合方式,更详细的信息请查阅 man 手册。 ps axf 主要用于查看当前系统中进程的 PID 以及执行终端(tty)和状态等信息,更重要的是它能显示出进程的父子关系…

WSL2 构建Ubuntu系统-轻量级AI运行环境

环境:Win11 软件:WSL2 安装环境:Ubuntu 22.04 检查电脑是否开启虚拟化 打开:任务管理器->性能->CPU CPU 开启虚拟化(通常默认是开启的,如果没有开启需要BIOS开启) 虚拟化设置&#xff0…

uni-app 扫码插件推荐:基于支付宝 mPaaS 扫码组件开发,支持 Android 和 iOS

一. 前言 之前说到,我的一个 uni-app 项目遭到用户吐槽:“你们这个 App 扫码的正确率太低了,尤其是安卓的设备。经常性的扫码扫不出来,就算是扫出来了,也是错误的结果!” 面对以上这个问题,我…

Vert.x,认证与授权 - HTTP基本认证

几乎所有的线上系统都离不开认证和授权,Vert.x auth相关组件提供了丰富(Session,JTW, OAuth,…),便捷的认证和授权支持。 当前,使用最多是Web应用,所以在后续讨论中,都是关于Vert.x auth在Web应…

【大数据分析与挖掘模型】matlab实现——非线性回归预测模型

一、实验目的 掌握有关非线性回归的理论知识,通过变量代换把本来应该用非线性回归处理的问题近似转化为线性回归问题,并进行分析预测。 二、实验任务 对非线性回归实例进行编码计算,实例如下: 三、实验过程 1.运行非线性回归中…

【TFR-Net】基于transformer重建网络

abstract: 提高对数据缺失的鲁棒性已经成为多模态情感分析(MSA)的核心挑战之一,MSA旨在从语言、视觉和声学信号中判断说话者的情感。在目前的研究中,针对不完全模态特征的MSA,提出了基于平移的方法和张量正…

Unity-Editor扩展,引擎管理AudioClip,音乐音效快捷播放功能

目录 选择一个Audio 音频文件即会 关键在于三个快捷模式 播放, 自动播放 循环播放 根本不需要Editor扩展开发 没找到虚幻引擎的audio 的管理是怎么样的 参考: 本来,觉得没有快捷方式,播放很不爽 想自定义搞一个&#xff…

全面了解 NGINX 的负载均衡算法

NGINX 提供多种负载均衡方法,以应对不同的流量分发需求。常用的算法包括:最少连接、最短时间、通用哈希、随机算法和 IP 哈希。这些负载均衡算法都通过独立指令来定义,每种算法都有其独特的应用场景。 以下负载均衡方法(IP 哈希除…

aws 把vpc残留删除干净

最近忘了把vpc 删干净导致又被收了冤大头钱 在删除vpc 的收发现又eni在使用,但是忘了是哪个资源在占用 先用命令行把占用的资源找出来停掉 使用 AWS 命令行界面(CLI)来查看 VPC 的使用情况 列出子网: aws ec2 describe-subnets …

【Java】常用方法合集

以 DemoVo 为实体 import lombok.Data; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;Data ExcelIgnoreUnannotated public class ExportPromoteUnitResult {private String id;ExcelProperty(value &qu…