黑马程序员爬虫实操:爬取医疗网站图片并进行分类存储到数据库及本地
2024-02-14 02:57:50
医学图像数据爬取方法
一、环境配置
1. Python安装
Python可以从官方网站下载,也可以使用第三方包管理工具,如pip或conda,来安装。
2. Requests库安装
Requests是一个用于发送HTTP请求的Python库,可以使用pip安装:
pip install requests
3. BeautifulSoup库安装
BeautifulSoup是一个用于解析HTML和XML文档的Python库,可以使用pip安装:
pip install beautifulsoup4
二、爬虫编写
1. 确定目标网站
要爬取图片的网站是医疗信息网站,如Mayo Clinic或WebMD。
2. 提取图片URL
可以使用BeautifulSoup库来提取图片的URL。以下代码演示如何从Mayo Clinic网站提取图片的URL:
from bs4 import BeautifulSoup
import requests
url = 'https://www.mayoclinic.org/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
images = soup.find_all('img')
for image in images:
image_url = image['src']
print(image_url)
3. 下载图片
可以使用Requests库来下载图片。以下代码演示如何下载图片并将其保存到本地:
import requests
url = 'https://www.mayoclinic.org/diseases-conditions/breast-cancer/in-depth/breast-cancer-surgery/art-20044463'
response = requests.get(url)
with open('breast-cancer-surgery.jpg', 'wb') as f:
f.write(response.content)
4. 存储图片到数据库
可以使用SQLAlchemy库将图片存储到数据库。以下代码演示如何将图片存储到MySQL数据库:
from sqlalchemy import create_engine, Column, Integer, String, LargeBinary
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql://user:password@host:port/database')
Session = sessionmaker(bind=engine)
session = Session()
class Image(object):
__tablename__ = 'images'
id = Column(Integer, primary_key=True)
url = Column(String)
data = Column(LargeBinary)
def __init__(self, url, data):
self.url = url
self.data = data
image = Image(url, data)
session.add(image)
session.commit()
三、实战
以下是如何使用本教程中的爬虫来爬取医疗信息网站图片并将其存储到本地和数据库的步骤:
1. 确定目标网站
首先,你需要确定要爬取图片的目标网站。本教程中,我们将使用Mayo Clinic网站。
2. 提取图片URL
使用BeautifulSoup库可以提取图片的URL。以下代码演示如何从Mayo Clinic网站提取图片的URL:
from bs4 import BeautifulSoup
import requests
url = 'https://www.mayoclinic.org/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
images = soup.find_all('img')
for image in images:
image_url = image['src']
print(image_url)
3. 下载图片
使用Requests库可以下载图片。以下代码演示如何下载图片并将其保存到本地:
import requests
url = 'https://www.mayoclinic.org/diseases-conditions/breast-cancer/in-depth/breast-cancer-surgery/art-20044463'
response = requests.get(url)
with open('breast-cancer-surgery.jpg', 'wb') as f:
f.write(response.content)
4. 存储图片到数据库
使用SQLAlchemy库可以将图片存储到数据库。以下代码演示如何将图片存储到MySQL数据库:
from sqlalchemy import create_engine, Column, Integer, String, LargeBinary
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql://user:password@host:port/database')
Session = sessionmaker(bind=engine)
session = Session()
class Image(object):
__tablename__ = 'images'
id = Column(Integer, primary_key=True)
url = Column(String)
data = Column(LargeBinary)
def __init__(self, url, data):
self.url = url
self.data = data
image = Image(url, data)
session.add(image)
session.commit()
四、总结
本教程介绍了如何使用Python爬虫从医疗信息网站下载图片并将其存储到本地和数据库。你学到了Xpath语法的详细解释、爬取图片的实战操作、如何处理翻页和多页面爬取等内容。本教程适合初学者,但也有经验丰富的程序员可以从中受益。