文章目录

前言

一、环境配置

1.安装selenium

2.使用正确的谷歌浏览器驱动

二、使用步骤

1.加载chromedriver.exe

2.设置是否开启可视化界面

3.输入关键词、下载图片数、图片保存路径

三、爬取效果

四、完整代码


前言

作为一名CVer,数据集获取少不了用到数据、图片爬虫技术,谷歌作为全球最大的数据搜索网站,如何从中快速获取大量有用图片数据尤为重要,但是技术更新,很多代码大多就会失效,爬与反爬永远斗智斗勇...


提示:以下是本篇文章正文内容,下面案例可供参考

一、环境配置

1.安装selenium

selenium是一个自动化测试工具,能够模拟浏览器行为,在爬虫上得到了广泛引用。如果你没有安装,请pip install

pip install selenium

2.使用正确的谷歌浏览器驱动

下载符合你的谷歌浏览器的驱动,chromedriver的版本一定要与Chrome的版本一致,不然就不起作用。

查看自己谷歌浏览器的版本,我这里是92.0.4515.131

找到对应的ChromeDriver版本,然后可以从下面的网站下载。

下载地址:https://npm.taobao.org/mirrors/chromedriver/

完整的代码包以及chromedriver已上传资源:https://download.csdn.net/download/m0_49688739/21005123

确保使用前你的电脑可以科学上网!

二、使用步骤

1.加载chromedriver.exe

修改以下代码中的路径,使用你自己的:

driver = webdriver.Chrome('E:/anaconda/chromedriver.exe', options=ch_op)

2.设置是否开启可视化界面

selenium模拟浏览器行为,其实相当于将我们手动搜索,输入,点击等操作用代码完成,这里可以设置是否开启可视化界面。

开启:可以看到浏览器自动打开并输入关键词搜索,滑动页面等过程,可以监测下载过程。

关闭:不开启浏览器界面,后台运行下载。

默认为关闭,如果需要开启请注释掉那两行代码

# 创建一个参数对象,用来控制chrome是否以无界面模式打开ch_op = Options()# 设置谷歌浏览器的页面无可视化,如果需要可视化请注释这两行代码ch_op.add_argument('--headless')ch_op.add_argument('--disable-gpu')

3.输入关键词、下载图片数、图片保存路径

这里的图片保存路径需要使用\\区分

之后就是获取图片url的过程,由于谷歌图片页面是动态加载的,获取每个图片的原图就需要点开大图,并等它加载一会才能获取到原图的url,如果时间太短,获取到的就会是缩略图,或者出错。

如果你的网络状况不好,请适当延长等待时间time.sleep()。

image = driver.find_element_by_xpath('//*[@id="islrg"]/div[1]/div[' + str(i) + ']/a[1]/div[1]/img')
# 此选项为下载缩略图
# image_src = image.get_attribute("src")
image.click() # 点开大图
time.sleep(4)  # 因为谷歌页面是动态加载的,需要给予页面加载时间,否则无法获取原图url,如果你的网络状况一般请适当延长
# 获取原图的url
image_real = driver.find_element_by_xpath('//*[@id="Sva75c"]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div[2]/div[1]/a/img')
image_url = image_real.get_attribute("src")

三、爬取效果

由于需要等待页面加载,所以爬取时间会比较长,请耐心等待。


下载的基本都是原图,除非获取原图url失败。

四、完整代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import time
import os
import urllib.request
import uuiddef download_pic(url, name, path):if not os.path.exists(path):os.makedirs(path)res = urllib.request.urlopen(url, timeout=3).read()with open(path + name +'.jpg', 'wb') as file:file.write(res)file.close()def get_image_url(num, key_word):box = driver.find_element_by_xpath('/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input')box.send_keys(key_word)box.send_keys(Keys.ENTER)box = driver.find_element_by_xpath('//*[@id="hdtb-msb"]/div[1]/div/div[2]/a').click()# 滚动页面last_height = driver.execute_script('return document.body.scrollHeight')while True:driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')time.sleep(2)new_height = driver.execute_script('return document.body.scrollHeight')try:driver.find_elements_by_xpath('//*[@id="islmp"]/div/div/div/div/div[5]/input').click()except:passif new_height == last_height:# 点击显示更多结果try:box = driver.find_element_by_xpath('//*[@id="islmp"]/div/div/div/div[1]/div[2]/div[2]/input').click()except:breaklast_height = new_heightimage_urls = []for i in range(1, num):try:image = driver.find_element_by_xpath('//*[@id="islrg"]/div[1]/div[' + str(i) + ']/a[1]/div[1]/img')# 此选项为下载缩略图# image_src = image.get_attribute("src")image.click() # 点开大图time.sleep(4)  # 因为谷歌页面是动态加载的,需要给予页面加载时间,否则无法获取原图url,如果你的网络状况一般请适当延长# 获取原图的urlimage_real = driver.find_element_by_xpath('//*[@id="Sva75c"]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div[2]/div[1]/a/img')image_url = image_real.get_attribute("src")image_urls.append(image_url)print(str(i) + ': ' + image_url)except:print(str(i) + ': error')passreturn image_urlsif __name__ == '__main__':# 创建一个参数对象,用来控制chrome是否以无界面模式打开ch_op = Options()# 设置谷歌浏览器的页面无可视化,如果需要可视化请注释这两行代码ch_op.add_argument('--headless')ch_op.add_argument('--disable-gpu')url = "https://www.google.com/"driver = webdriver.Chrome('E:/anaconda/chromedriver.exe', options=ch_op)driver.get(url)key_word = input('请输入关键词:')num = int(input('请输入需要下载的图片数:'))_path = input('请输入图片保存路径,例如G:\\\\google\\\\images\\\\ :')# path = "G:\\google\\images_download\\" + key_word + "\\"  # 图片保存路径改为自己的路径path = _path + key_word + "\\"print('正在获取图片url...')image_urls = get_image_url(num, key_word)for index, url in enumerate(image_urls):try:print('第' + str(index) + '张图片开始下载...')download_pic(url, str(uuid.uuid1()), path)except Exception as e:print(e)print('第' + str(index) + '张图片下载失败')continuedriver.quit()

Python批量爬取谷歌原图,2021年最新可用版相关推荐

  1. python自动搜索爬取下载文件-python批量爬取下载抖音视频

    本文实例为大家分享了python批量爬取下载抖音视频的具体代码,供大家参考,具体内容如下 import os import requests import re import sys import a ...

  2. 疫情过去女朋友想去重庆玩,python批量爬取小猪短租重庆民宿信息

    疫情过去女朋友想去重庆玩,python批量爬取小猪短租重庆民宿信息 随着时间的流逝,在中国共产党的领导,全国人民的共同努力下,疫情逐渐受到了控制,逐渐好转,复工,开学有望.最近在和女朋友的闲聊当中得知 ...

  3. Python批量爬取王者荣耀英雄高清壁纸

    Python批量爬取王者荣耀英雄高清壁纸 文章目录 Python批量爬取王者荣耀英雄高清壁纸 前言 爬虫步骤 python代码实现 总结 前言 很多喜欢玩王者的朋友很希望把王者荣耀的英雄图片拿来做壁纸 ...

  4. python 批量爬取网易云音乐,java解密

    每天一点点,记录学习 python 批量爬取网易云音乐 网易云音乐,排行榜,右键,显示网页源代码,并不能找到任何一首歌的id,是因为java加密了 随便找一首id为1374061038的歌,在网页源代 ...

  5. python爬虫笔记(八) 实例3:用Python批量爬取全站小说【以书趣阁为例】

    1. 用Python批量爬取全站小说 爬取这个网站小说:http://www.shuquge.com/txt/89644/index.html 2. 爬取一本书 # -*- coding: utf-8 ...

  6. python webshell_使用 Python 批量爬取 WebShell

    使用 Python 批量爬取 WebShell 还在用爬虫爬一些简单的数据?太没意思了!我们来用爬虫爬 WebShell! 0. 引子 前些天访问一个平时经常访问的网站,意外的发现这个站出了问题,首页 ...

  7. 最新 用Python 批量爬取网上图片

    标题 最新 用Python 批量爬取网上美眉图片 故事是这样的:七月份给室友说,我要开始学习Python了.室友一脸懵,并问我Python是啥?确实对于我这个小城市来说Python之风还没有吹到我们这 ...

  8. 从入门到入土:Python实现爬取刷新微博推荐和最新好友微博|cookie调用|模拟登录

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) Python实现爬取刷新微博推荐和最新好友微博|cookie ...

  9. Python批量爬取简历模板

    文章目录 前言 一.需求 二.分析 1. 查看网页源码(ctrl+u) 2.进一步分析 三.处理 四.运行效果 前言 为了更好的掌握数据处理的能力,因而开启Python网络爬虫系列小项目文章. 小项目 ...

  10. python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...

    上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...

最新文章

  1. Android 10 新增的功能
  2. CSS实现文字环绕图片
  3. leetcode算法题--分裂二叉树的最大乘积
  4. 李洪强和你一起学习前端之(8)浮动,网页布局,定位
  5. new housing price at shanghai
  6. 【Python】函数调用外部变量
  7. sql语句的type='u'问题
  8. pandas中的函数—— .map()
  9. LeetCode 2208. 将数组和减半的最少操作次数(优先队列)
  10. Nginx学习总结(7)——Nginx配置HTTPS 服务器
  11. 12306一直提示网络有问题_春运攻略:西安网友买票遇到的这些问题,这里有答案...
  12. kaggle房价预测特征意思_Kaggle初探--房价预测案例之数据分析
  13. JSP的Listener介绍
  14. SpringMVC扩展
  15. 实验平均梯度与图像的模糊程度(matlab 代码)
  16. 数据结构 复习攻略 新手必看
  17. 从“NVIDIA禁令”看如何正确选择NVIDIA GPU卡
  18. 关于寒武纪今天首发的云端智能芯片,你应该知道这些
  19. vue 项目检测新版本功能
  20. ft232h引脚_FT1248开发笔记

热门文章

  1. 学生用计算机的使用技巧,选学生笔记本电脑的小窍门
  2. 键盘计算机编程是什么意思,可编程键盘是什么
  3. vs商业智能项目的安装
  4. mame4android汉化,MAME4droid
  5. 为什么要考华为云认证?有什么用?
  6. 浙江省公务员考试计算机专业,浙江省公务员(机关工作人员)考试计算机专业
  7. DEL: 华为无线modem变无线路由器
  8. 更新appid失败,登录用户不是该小程序的开发者
  9. Hexo文章中插入图片的方法
  10. 电脑如何分盘win10_Win10电脑如何刻录光盘?利用win10自带刻录工具来刻录DVD光盘教程...