本文依赖于 Fabian Bosler 编写的代码:
用 Python 抓取图像
我只是修改了 Bosler 的代码,以便更轻松地为多个搜索词提取图像。
完整代码可以在该系列的 Github 存储库中找到:
deep_arcane -- scrap.py
魔术符号
正如我在之前的文章中提到的,我需要大量的魔法符号图像来训练深度卷积生成对抗网络 (DCGAN)。幸运的是,我很早就找到了 Bosler 的文章。
为了获取我的图像,我使用 Chrome 浏览器、Chromedriver、Selenium 和 Python 脚本从 Google 的图像搜索中慢慢抓取图像。抓取被限制在接近人类的速度,但允许自动收集大量图像。
关于这个过程,我会附和 Bosler,我绝不是法律专家。我不是律师,我所说的任何内容都不应被视为法律建议。我只是互联网上的黑客。 然而,据我所知,抓取 SERP(搜索引擎结果页面)并不违法,至少不是供个人使用。但是使用 Google 的图像搜索自动抓取图像违反了他们的服务条款 ( ToS)。复制此项目需要您自担风险。我知道当我调整我的脚本以更快地搜索时谷歌禁止了我的 IP。我很高兴这是暂时的。
Bosler 的修改脚本
该脚本会自动搜索图像并收集其基础 URL。搜索后,它使用 Pythonrequests库将所有图像下载到以搜索词命名的文件夹中。
以下是我对 Bosler 的原始脚本所做的修改:
添加了搜索词循环。这允许脚本继续运行超过一个搜索词。
脚本在遇到“显示更多结果”时卡住了,我已经解决了这个问题。
结果保存在与搜索项关联的目录中。如果脚本被中断并重新运行,它会查看首先创建的目录,并将这些目录从搜索项中删除。
我添加了超时功能;感谢Stack Overflow上的一位用户。
我参数化了每个搜索词要查找的图像数量、睡眠时间和超时。
代码:库
您将需要安装 Chromedriver 和 Selenium——这在原始文章中有很好的解释。
用 Python 抓取图像
您还需要安装Pillow——一个用于管理图像的 Python 库。
你可以安装它:
pip install pillow
安装所有需要的库后,下面的代码块应该可以正确执行:
import os
import time
import io
import hashlib
import signal
from glob import glob
import requests
from PIL import Image
from selenium import webdriver
如果您有任何问题,请重新阅读原始文章设置说明或随时在下面的评论中提问。
代码:参数
我在脚本中添加了一些参数以方便使用。
number_of_images = 400
GET_IMAGE_TIMEOUT = 2
SLEEP_BETWEEN_INTERACTIONS = 0.1
SLEEP_BEFORE_M