前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用python爬取pubchem药物分子数据

使用python爬取pubchem药物分子数据

作者头像
Tom2Code
发布2024-01-26 15:30:43
5180
发布2024-01-26 15:30:43
举报
文章被收录于专栏:Tom

pubchem数据库,就不过多介绍了。

今天在使用这个网站的时候,发现了这个网站的REST接口,我们就来看一下:

pubchem提供了一个接口叫做

PUG REST Tutorial

代码语言:javascript
复制
本文档的目的是解释 PubChem 的 PUG REST 服务的结构,
并以各种使用案例作为说明,帮助新用户了解该服务的工作原理,
以及如何构建作为该服务接口的 URL。PUG 是 Power User Gateway
(强力用户网关)的缩写,它包括多种编程访问 PubChem 数据和服务的方法。
这种 REST 风格的接口旨在为脚本、网页中嵌入的 javascript 和第三方应
用程序等提供访问 PubChem 的简单途径,而不需要其他版本的 PUG 所需的
 XML、SOAP 信封等开销。PUG REST 还能方便地访问 PubChem 记录信息,
 这是其他任何服务都无法提供的。
 ————来自官网的介绍

再来看看这个PUG到底是干啥的?

代码语言:javascript
复制
PUG REST 的基本单位是 PubChem 标识符,它有三种类型:SID(物质)、
CID(化合物)和 AID(检测)。使用这些标识符的这项服务的概念框架由三部
分请求组成:1)输入--即我们谈论的是什么标识符;2)操作--如何处理这些标
识符;3)输出--应返回哪些信息。这种设计的美妙之处在于,请求的这三个部分
(大部分)都是独立的,从而允许在单个请求中进行组合扩展。举例来说,
任何形式的输入(指定一组 CID)都可以与处理 CID 的任何操作以及与所选
操作相关的任何输出格式相结合。因此,你可以将这些构件以多种方式组合起来,
创建定制的请求,而不是支持一系列单独的、定义狭隘的服务请求。

所以 sid cid 和aid其实都是一些化合物的id,我们可以通过请求这个id来获得与其对应的属性:

官网的流程图,可以看到数据的返回格式是很多种的。

例如:

代码语言:javascript
复制
例如,该服务支持通过 SMILES 输入化学结构。它支持将化学结构输出为
 PNG 格式的图像。你可以将这两者结合到一个 SMILES 字符串的可视化
 请求中 在这种情况下,无论该特定化学物质是否存在于 PubChem 数据库中
 !而这几乎是你可以在网页浏览器中手动输入的内容:

网址:

代码语言:javascript
复制
https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/smiles/CCCCBr/PNG

结果:

其实大家可以看这个网址的请求,就能发现其集中的奥妙:

代码语言:javascript
复制
https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/smiles/CCCCBr/PNG

rest/pug/compound/smiles/CCCCBr/PNG

首先是rest,说明这是一个restful设计的接口(不懂的同学可以问一下学计算机的童鞋)

然后是pug,就是这个接口的请求地址了

然后是compound,就是类型是化合物咯

然后是smiles,那么就是要看这个分子的smiles分子式了

然后是CCCCBR,这个就是分子的化学式咯(我觉得应该是碳碳碳碳溴的意思)

然后最后一个是PNG 那当然就返回图片咯

所以现在大家可能就更清楚一些了,那我们再看一个请求:

代码语言:javascript
复制
https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/11359451/property/MolecularFormula,MolecularWeight,Synonyms,InChI,InChIKey,CanonicalSMILES/JSON

https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/11359451/property/MolecularFormula,MolecularWeight,InChI,InChIKey,CanonicalSMILES/JSON

。我们开始分析这个网址的参数:

首先是rest,pug,compound这三个就先不说了

然后就是cid,这次使用的是化合物id

然后11359451就是本次我们搜索的时候化合物的id咯

property就是说我们这次需要请求的是属性

MolecularFormula,MolecularWeight,InChI,InChIKey,CanonicalSMILES

。这些参数则是说明了我们请求的具体参数,分别是:

分子表达式 molecular Formula

分子重量 molecular weight

inchi值和inchikey

还有该化合物的smiles分子式

最后一个参数JSON指定了本次请求的输出格式是json格式的字符串

那我们来看一下结果:

对应的参数都已经输出了。

这样的好处就是我们在写爬虫的时候,可以批量的通过cid来对数据进行爬取,

这只是一个非常简单的demo,使用requests进行请求,然后可以扩展的地方有很多:

  1. 批量保存数据
  2. 筛选我们需要的数据类型和数据范围
  3. 大批量爬取

今天Tom已经使用这个api接口对数据进行了批量的爬取,所以以后就不用很机械的进行一个一个的搜索了。

今天的结果:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tom的小院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PUG REST Tutorial
相关产品与服务
文档服务
文档服务(Document Service,DS)是腾讯云数据万象提供云上文档处理服务,支持多种类型的文件生成图片或 html 格式的预览,可以解决文档内容的页面展示问题,满足 PC、App 等多端的文档在线浏览需求。同时,本产品还提供文本隐私筛查能力,可以有效识别文本中的身份证号、银行卡号、手机号等敏感数据,满足数据可用性和隐私保护的各种要求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档