Python网络爬虫:图片抓取

在当今信息爆炸的时代,经常需要从互联网上获取大量的数据,用于价格监控、丰富机器学习模型、金融数据聚合、监测消费者情绪、新闻追踪等多种用途。浏览器能够展示网站的数据,但是手动从多个来源复制数据到一个中心位置是非常繁琐和耗时的。网络爬虫工具本质上自动化了这一手动过程。

本文旨在让快速了解如何使用Python进行图片抓取。所谓的“网络爬虫”,也称为爬行或蜘蛛,是从在线源(通常是网站)自动收集数据的过程。虽然爬虫是在短时间内获取大量数据的好方法,但它确实会给托管源的服务器带来压力。这就是为什么许多网站完全禁止或限制爬虫的原因。然而,只要它不干扰在线源的主要功能,这种做法通常是可以接受的。

目标是为深度学习模型获取图像数据。这可能是任何东西,比如猫和狗的图像分类,或者使用图像对超级英雄进行分类。所有这些问题都需要大量的数据。有时有这些数据,有时没有。在这种情况下,可以轻松地从任何网站使用网络爬虫收集数据。

Selenium简介

Selenium是一个开源的基于Web的自动化工具。Selenium主要用于行业内的测试,但也可用于网络爬虫。将使用Chrome浏览器,但可以尝试任何浏览器,几乎是一样的。SeleniumPython绑定提供了一个简单的API,用于使用SeleniumWebDriver编写功能/验收测试。通过Selenium Python API,可以以直观的方式访问Selenium WebDriver的所有功能。

SeleniumPython绑定提供了一个方便的API来访问Selenium WebDrivers,如Firefox、IE、Chrome、Remote等。目前支持的Python版本是3.5及以上。有关Selenium的更多信息,请查看其。

实现步骤

在了解了网络爬虫的基础知识之后,让深入代码部分。首先,建议为这个项目创建一个单独的环境,并且有一个IDE(如PyCharm)会是一个加分项。在激活环境后,首先需要安装所需的库。为此,只需在终端中输入以下命令,然后从下载文件:

pip install -r requirements.txt

现在打开IDE,按照以下步骤操作:

import os # 导入库 import time import requests from selenium import webdriver

上述代码行将导入所需的库。

以下是一个函数,用于获取图像URLs:

def fetch_image_urls(query: str, max_links_to_fetch: int, wd: webdriver, sleep_between_interactions: int = 1): # ...函数实现...

这个函数接受4个参数:查询、要抓取的最大链接数、WebDriver路径和抓取两个图像之间的时间间隔。

构建Google查询:

search_url = "https://www.google.com/search?safe=off&site=&tbm=isch&source=hp&q={q}&oq={q}&gs_l=img"

加载页面:

wd.get(search_url.format(q=query))

‘get’方法将为给定的URL加载网页。

以下是抓取图像URLs的代码逻辑:

# ...代码逻辑...

下载和存储图像:

def persist_image(folder_path:str,url:str, counter): # ...函数实现...

‘persist_image’函数用于从URL提取内容并将其存储到系统中。

以下是搜索和下载图像的函数:

def search_and_download(search_term: str, driver_path: str, target_path='./images', number_images=10): # ...函数实现...
  1. pip install -r requirements.txt
  2. 确保机器上安装了Chrome/Mozilla
  3. 检查Chrome版本(前往三个点->帮助->关于Google Chrome)
  4. 从下载与Chrome版本相匹配的ChromeDriver
  5. 将其放入与此代码相同的项目文件夹中
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485