编写程序爬取阿司匹林的英文名称、分子量、SMILES、并下载分子结构图片
时间: 2023-10-20 22:17:19 浏览: 173
由于涉及到网页解析和图片下载,需要使用Python的requests、BeautifulSoup和pillow库。
代码如下:
```python
import requests
from bs4 import BeautifulSoup
from PIL import Image
# 请求页面并解析
url = 'https://www.drugbank.ca/drugs/DB00945'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 获取英文名称、分子量和SMILES
name = soup.find('h1', class_='page__title').text.strip()
molecular_weight = soup.find('span', {'property': 'schema:molecularWeight'}).text.strip()
smiles = soup.find('span', {'property': 'schema:smiles'}).text.strip()
# 获取分子结构图片并保存
img_url = 'https://www.drugbank.ca' + soup.find('img', {'alt': '2D Structure'})['src']
img_response = requests.get(img_url, stream=True)
img = Image.open(img_response.raw)
img.save(name + '.png')
```
解析过程中使用了BeautifulSoup的find方法获取页面元素,通过指定属性和属性值来定位元素。其中,smiles标签的属性为`property="schema:smiles"`,需要使用字典形式指定属性和属性值。
图片下载需要使用requests库的stream参数,使得图片数据以流的形式返回,避免一次性读取整个图片数据造成内存占用过多。最后使用pillow库的Image类打开图片并保存即可。
运行以上代码后,程序会在当前目录下生成一个以阿司匹林英文名称命名的PNG图片,即为分子结构。
阅读全文