旁门左道:批量下载化合物结构式
1 项目描述
本项目实现了利用化合物CAS编号从爱化学(ichemistry.cn)网站查询化合物信息并下载相对应的化合物结构式,然后将其导入到Excel文件中,以便打印和随时阅读。如图所示:
![](https://ng1.17img.cn/bbsfiles/images/2023/08/202308231206289440_4211_3352385_3.png)
图1 结果实例
2 功能要求
2.1 批量读取excel文件中的数据
2.2 根据CAS号码批量下载化合物的结构式的.png或.gif图片
2.3 将图片批量插入数据表格中
3 功能实现
3.0 使用之前开发的批量获取PDF文件中的表格数据获取对应的表格信息,使用pandas对数据进行清洗,保存到excel文件中。详细信息请了解:旁门左道:如何一键提取pdf文档中的全部表格https://bbs.instrument.com.cn/topic/8245597_1_1_2_1_1
3.1 使用pandas对excel数据导入,这里导入已经经过清洗后的数据。
![](https://ng1.17img.cn/bbsfiles/images/2023/08/202308231206289528_3945_3352385_3.png)
图2
3,2 使用requests构建URL并对URL发起请求,获取图片的SRC。
![](https://ng1.17img.cn/bbsfiles/images/2023/08/202308231206291228_2645_3352385_3.png)
图3
3.3 使用requests下载图片的SRC的内容,并写入对应的图片文件。这里的图片文件名称使用cas编号直接命名,防止重名。
图4
3.4 使用openpyxl,读取excel文件并批量将图片插入CAS编号对应的单元格。
![](https://ng1.17img.cn/bbsfiles/images/2023/08/202308231206293929_3352_3352385_3.png)
图5
3.5 使用excel中的嵌入指令将图片嵌入到单元格(非必须,也可以选择浮在单元格上方)
![](https://ng1.17img.cn/bbsfiles/images/2023/08/202308231206295296_4906_3352385_3.png)
图6
4 使用方法
4.1 代码的使用需要有简单的python基础。
4.2 先展示代码的部分,水一篇帖子。需要的人多的话,会做成桌面小程序。
5 项目总结
在有机分析人员日常工作中,经常需要了解化合物的结构式,以便观察其功能基团,结构,极性等,这个demo主要解决上述问题。
这个demo的代码部分主要使用了openpyxl、requests、pandas对数据和图片进行处理、请求、下载等操作,最终实现一个完整的功能。
遇到的困难和核心难点主要有:
* 删除数据中的空值行和含有特定字符的行(数据清洗)。
* 请求网站的选择需要注意,测试了多个网站,目前爱化学比较稳定但速度较慢,估计是没钱租服务器了。
* 对于未找到图片的化合物下载的问题(目前未解决)。
* 图片批量导入只能执行一次,避免重复导入。
* 直接嵌入单元格图片的功能仍未实现
* 没有做单元格高度和宽度的调整。
6 成果展示
![](https://ng1.17img.cn/bbsfiles/images/2023/08/202308231206296353_6941_3352385_3.png)
图7
旁门左道系列:
《旁门左道:如何一键提取PDF文档中全部表格》https://bbs.instrument.com.cn/topic/8245597
《旁门左道:如何批量提取坛墨质检标准物质证书》https://bbs.instrument.com.cn/topic/8246943_1_3_1_1_2