爬一爬那些年你硬盘存过的“老师”
作者 | PayneLi
转载自Python全家桶(ID: python-0321)
最近在Github发现一个基于google浏览器的爬虫项目,此项目是由美国大神2018年开源的。这个开源项目不需要使用者再去手写核心爬虫,只需要下载安装,然后传入一些配置参数即可。重要的能做到google图片的无限量爬取,只有不想爬的图片,没有爬不到的。下来就介绍一下这个牛逼的开源项目。
前沿
这是一个命令行python程序,用于搜索Google Images上的关键字/关键短语,并可选择将图像下载到您的计算机。还可以从另一个python文件调用此脚本。
如果只想为每个关键字下载最多100个图像,则无需安装依赖项。如果您想要每个关键字超过100个图像,需要同时安装Selenium库chromedriver。故障排除部分中的详细说明。
Github地址:https://github.com/hardikvasa/google-images-download
项目介绍: google-images-download
此项目开源到现在一年的时间,就已经收割了3900+star,真的不得不跪拜大神的能力,能将一个简单的爬虫做到如此牛逼的地步。
当然,这么热门的项目,也不是一个人短时间完成的。Github上显示,此项目的贡献者就高达26人,代码总共提交了133次。此项目能收到这么多star,还是在于更多的贡献者和后期的不断维护升级。
这个项目在github也做了具体的使用说明和介绍,大家可以根据自身的项目情况进行配置即可(为了方便阅读,通过google翻译为中文)。
关于此项目使用这里多逼逼几点:
- 版本要求: 该项目作者GitHub上说python2x与Python3x都可以,推荐Python3。
- 项目使用:有2种使用方式
方式一:使用pip安装报的方式(推荐)
pip install google_images_download
方式二:手动下载
git clone https://github.com/hardikvasa/google-images-download.git
cd google-images-download && sudo python setup.py install
- 图片数量: google搜索关键字首页默认100张图片,要抓取更多的图片,就得增加翻页功能。此项目已经实现了翻页功能,只需要使用者同时安装Selenium库chromedriver,代码里面配置即可。
- 参数方式: 原作者对参数的传递形式和每一个参数都做了详细的说明,大家可以github详细了解。
使用案例
这里给大家分享一下如何将此项目用来爬取去自己需要的图片。原作者介绍了几种关键字输入的方式。这里以文件读取的形式将关键字传入。这里爬取图片的数量选为500张,需要下载、安装Selenium库chromedriver。
1、搭建爬虫环境
pip install selenuium
pip install requests
pip install google_images_download
2、下载chromedriver驱动
因为下载的图片数量大于100,所以还需要在安装chromedriver,在代码配置chromedriver位置即可。
首先要查看自己电脑上安装的google浏览器版本号
▲谷歌浏览器版本号▲
github给的下载路径国内是无法下载的,不过小编已经将大多数驱动下载下来,需要的可以后台私信获取。当然也可以通过别的渠道获取。
▲github给的下载地址▲
在chrome官网找到与本机的google浏览器版本号一致的chromedriver
▲chrome官网对应的驱动版本号▲
下载完后,安装的路径根据操作系统自己指定。我使用的时win系统,安装在了D盘,具体路径如下:
"D:downloadchromedriver.exe"
3、编辑爬取的关键字文件
如图所示,只需要在keywords.csv文件里面按图所示填写对应老师的名称即可。
4、代码展示
import csv
import os
import sys
from google_images_download import google_images_download
# 实例化一个下载器
downloader = google_images_download.googleimagesdownload()
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, BASE_DIR)
# 读取关键字文件
csv_file = csv.reader(open(BASE_DIR + "google_imageskeywords.csv", "r"))
def download_images(csv_file):
"""
传入关键字等参数,下载对应的图片文件
files: 读取的关键字文件
limit: 爬取的图片数量
print_urls: 是否显示爬取的图片url
chromedriver: chromedriver安装的路径。不填此参数,默认爬取前100张图片
output_directory:自定义保存图片的位置
"""
for key_word in csv_file:
arguments = {"keywords": key_word, "limit": 500, "print_urls": True,
"chromedriver": "D:downloadchromedriver.exe",
"output_directory": BASE_DIR + "\files\"}
downloader.download(arguments)
if __name__ == '__main__':
download_images(csv_file)
运行:python google_download.py,你就会发现有源源不断的老师图片进入你的硬盘,接下来就是坐等爬完所有你要的图片了。
此文章主要还是给大家分享这个开源项目,至于使用,本文只是做了一个简单的使用,想要了解更多的,可以直接在github查看。在实际中,我们可以利用这个python脚本去爬取基于google的任何图片了。
(本文为AI科技大本营转载文章,转载请微信联系原作者)
- 行业数据重要性不用多说,呕心整理分享(2)
- 云计算如何在银行业务发挥作用?
- SNH48 要推出定制 AI 形象,和初音未来有什么不同?
- 字节对齐
- 微信更新为小程序引入游戏功能,朋友圈又刷屏了
- WCF技术剖析之二十七: 如何将一个服务发布成WSDL[基于WS-MEX的实现](提供模拟程序)
- Linux同步机制(二) - 条件变量,信号量,文件锁,栅栏
- WCF技术剖析之二十七: 如何将一个服务发布成WSDL[基于HTTP-GET的实现](提供模拟程序)
- zookeeper集群搭建
- WCF技术剖析之二十七: 如何将一个服务发布成WSDL[编程篇]
- 浅谈反馈式按钮的设计与实现
- 对比手游和PC游戏的发展,小程序会成为手游开发的热点?
- 雷军旗下金山云再获融资2.2亿美元
- WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[WS标准篇]
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 你不知道的js中关于this绑定机制的解析[看完还不懂算我输]
- 解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
- 算法-查找斐波纳契数列中第 N 个数
- 在python中修改.properties文件的操作
- Django Xadmin多对多字段过滤实例
- 算法-姓名去重
- Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
- Python Opencv中用compareHist函数进行直方图比较对比图片
- 面试题-树状数组结构转化
- Xadmin+rules实现多选行权限方式(级联效果)
- Android仿主流壁纸App设置界面
- Android中WindowManager与WMS的解析
- 算法(简单)_搜索二维矩阵&分解质因数
- 算法_最大子数组&合并排序数组
- 算法_比较字符串&字符串密钥格式