做图像处理的朋友,都时常需要收集整理大量的图像数据集。做科研时有各种现有的标准数据集大家都直接拿来用,但是工程上却经常需要自己收集图片,从网上爬取图片便成了比较常见的任务。为了用python完成这个任务,需要解决如下两个问题:

1. 图片素材源自哪里呢?第一直觉就是搜索引擎里的图片,比如要收集手机的图片,则进入搜索引擎搜索关键字即可得到大量相关图片。

2. 动态网站的内容往往是通过ajax异步加载,直接用python中urllib库read到的内容不完整,且需要的内容基本都是异步加载进来的,直接获取不到。当然,有些任务可能只需处理些静态网页,但不幸的是,现在动态网页基本是主流,且我们爬图片的网站图片基本都是ajax加载的。所以如何解决爬取动态网站的问题呢?回答是采用selenium库模拟浏览器打开网页加载完全后再处理。这个解决方案可以参考博文,该文总结了4中方案,其中使用selenium比较适合这个任务。

本篇文章给出基于soso搜索引擎的图片爬虫程序,对google和360的好搜方式相同。但是爬百度的稍微麻烦点,参见另一篇博文。

首先,进入soso搜索,输入查询词“手机”,出现大量手机图片,如图

上图中网址栏的地址就是待爬取网页的url,然后给出python结合selenium爬取图片的代码如下

from selenium import webdriver

import time

import urllib

# 爬取页面地址

url = 'http://pic.sogou.com/pics?query=%CA%D6%BB%FA&w=05009900&p=40030500&_asf=pic.sogou.com&_ast=1422627003&sc=index&sut=1376&sst0=1422627002578'

# 目标元素的xpath

xpath = '//div[@id="imgid"]/ul/li/a/img'

# 启动Firefox浏览器

driver = webdriver.Firefox()

# 最大化窗口,因为每一次爬取只能看到视窗内的图片

driver.maximize_window()

# 记录下载过的图片地址,避免重复下载

img_url_dic = {}

# 浏览器打开爬取页面

driver.get(url)

# 模拟滚动窗口以浏览下载更多图片

pos = 0

m = 0 # 图片编号

for i in range(10):

pos += i*500 # 每次下滚500

js = "document.documentElement.scrollTop=%d" % pos

driver.execute_script(js)

time.sleep(1)

for element in driver.find_elements_by_xpath(xpath):

img_url = element.get_attribute('src')

# 保存图片到指定路径

if img_url != None and not img_url_dic.has_key(img_url):

img_url_dic[img_url] = ''

m += 1

ext = img_url.split('.')[-1]

filename = str(m) + '.' + ext

#保存图片数据

data = urllib.urlopen(img_url).read()

f = open('./yourfolder/' + filename, 'wb')

f.write(data)

f.close()

driver.close()

上面的代码只下载了第一页,selenium还可以模拟点击网页触发加载更多图片。此外,保存图像的代码段也可以简化成一句

urllib.urlretrieve(img_url, './yourfolder/%s' % filename)

最后,爬取出来的图片如下图所示,下一篇介绍如何爬取百度图片。

原文:http://blog.csdn.net/seanwang_25/article/details/43317147

python爬取谷歌图片_selenium+python 爬取网络图片(1) -- soso、谷歌、好搜相关推荐

  1. 如何使用python爬取百度图片_python实现爬取百度图片的方法示例

    本文实例讲述了python实现爬取百度图片的方法.分享给大家供大家参考,具体如下: import json import itertools import urllib import requests ...

  2. python爬去百度图片_python实现爬取百度图片的方法示例

    本文实例讲述了python实现爬取百度图片的方法.分享给大家供大家参考,具体如下: import json import itertools import urllib import requests ...

  3. python爬虫爬取京东图片(python小白笔记七)

    有时候需要统计,图片参考等,用python爬虫.爬下来的图片再存储到本地,同时把文件的名称取出一下.同时,python真是个有趣的东西,欢迎一起交流学习. 代码如下: 我的只是提取第一页,同时把图片保 ...

  4. 一个爬取谷歌图片的python程序

    查看了一些别人写的代码,照着大体的模板,写了一个自己的版本,亲测可用. 输入:一个文本,关键词断行分隔. 特点:一类别一文件夹,可使用自定义多线程下载,可自定义下载图片数目上限. #!/usr/bin ...

  5. python爬取论坛图片_[python爬虫] Selenium定向爬取虎扑篮球海量精美图片

    前言: 作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员 ...

  6. python爬取微博图片教程_Python爬取微博实例分析

    引言 利用Ajax分析微博并爬取其内容如微博内容,点赞数,转发数,评论数等. 分析 打开陈一发微博网站:https://m.weibo.cn/p/1005051054009064,并同时打开开发者工具 ...

  7. python爬虫微博评论图片_python爬虫爬取微博评论

    原标题:python爬虫爬取微博评论 python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手.python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无 ...

  8. python最新官网图片_Python轻松爬取Rosimm写真网站全部图片

    RosimmImage 有图有真相 def main_start(url): """ 爬虫入口,主要爬取操作 """ try: r = re ...

  9. python如何截长图_selenium定时爬取长截图

    Python + selenium + windows定时任务 实现定时每日定时长截图 首先下载一个chromdriver插件(插件下载地址:http://chromedriver.storage.g ...

  10. python 批量下载网页图片_Python批量爬取图片并下载

    PS:本文附赠爬汇图网图片的方法 本文的目录看这里:前言找资源部分进入编程猫图鉴网找到聚集地获取聚集地网址代码部分导入相应的库re库介绍代码获取整个网站的内容扩展:状态码的意思其他的代码--总体代码关 ...

最新文章

  1. 【Groovy】闭包 Closure ( 闭包调用 | 闭包默认参数 it | 代码示例 )
  2. spring 可以有多个ioc容器吗
  3. python详细的安装教程分享!
  4. Java中Volatile的理解
  5. 隐藏响应的server,X-Powered-By
  6. Git初学札记(九)————EGit检出远程分支
  7. LeetCode--151. 翻转字符串里的单词(字符串翻转,字符串分割)
  8. 小米12 Ultra有望换装索尼传感器:牵手徕卡 搭载新一代影像旗舰
  9. python第三方插件pip是什么_Python怎么安装第三方模块?
  10. Android用户界面设计:基本按钮
  11. HDU - 6273 Master of GCD
  12. 通达信自带指标 阶段放量(c112)
  13. HSV空间改进的多尺度Retinex算法
  14. 人生有三重境界:看山是山,看水是水;看山不是山,看水不是水;看山还是山,看水还是水(转载)
  15. SpringIOC和DI简单总结
  16. 喜大普奔!rgee能用了!R语言也可以使用Google Earth Engine了!
  17. win7系统 邮箱服务器搭建,win7搭建邮箱服务器
  18. JAVA操作execl
  19. 5G移动通信标准学习笔记(一)
  20. 芒德布罗集matlab程序,分形、噪声和状态变量

热门文章

  1. lingo入门教程之二 --- 集合运用
  2. 解析小觅中通过双目相机生成深度图的代码
  3. python k线斜率计算公式_均线角度公式,通达信均线斜率公式
  4. javaweb调用qq认证登录接口
  5. android button 点击没有音效
  6. 图像处理中的白化处理
  7. 一名数据分析师的工作职责和需要掌握的基本知识
  8. 一个微信群机器人PHP,vbot微信机器人操作联系人的API(3)微信群API
  9. Excel生成满足正态分布的随机数
  10. 路由协议常见FAQ-V1.1