目标

指定关键字,爬取若干张(>1000)图片。

环境

windows 10 + python3.7 + IDE为jupyter (or pycharm) +(可选:如需爬取谷歌图片,需科学上网)

Google实现

(需自行实现科学上网)

参考 : https://github.com/YoongiKim/AutoCrawler/blob/master/README.md

  1. 自行实现科学上网
  2. 安装Chrome浏览器--Chrome浏览器右上角的三个竖着的点--设置--关于Chrome(在左下角位置)--得到图1,它表明 Chrome版本为 87.0,记下这个版本号
  3. clone开源项目:git clone https://github.com/YoongiKim/AutoCrawler.git
  4. 在此项目的根目录下(即进到 requirements.txt文件所在的目录),执行 pip install -r requirements.txt
  5. 在这里下载适合自己的chrom drive (选第二步中对应的版本号,即 87.0),如图2
  6. 在  keywords.txt  里写搜索的key words, 如想爬取猫的图,就写“cat”
  7. 执行python脚本,python run.py
  8. 文件将会被下载到 'download' 目录,会根据第6步中的key words自行形成次级目录.如图3

图1

图2

图3

搜狗实现

  1. 创建run.py空白文件,拷贝代码(见下文)
  2. 在这里输入你的搜索关键字(中英文均可)-- 点url编码 -- 拷贝编码结果。 如图4
  3. run.py的24行,将query=后的内容改成步骤2中的编码结果
  4. run.py的44行,将存储路径指定为你想要的路径
  5. 执行python脚本,python run.py
  6. 文件将会被下载到 步骤3中指定的路径.如图5

图4

图5
import requests
import urllib
import json
import os
import shutil  # 用来删除文件夹
import datetimedef getSogouImag(path):# 判断文件夹是否存在,存在则删除if os.path.exists(path):shutil.rmtree(path)# 创建文件夹os.mkdir(path)m = 0# 循环爬取,每次100张,共50次for i in range(0,50):start_p = i*100stop_p = (i+1)*100##这个 URL 怎么写? 请看文中url_i = 'https://pic.sogou.com/napi/pc/searchList?mode=1&start=' \+ str(start_p) \+ '&xml_len=' \+ str(stop_p) \+ '&query=%E6%88%B4%E5%AE%89%E5%85%A8%E5%B8%BD%E7%8E%B0%E5%9C%BA'imgs = requests.get(url_i)imgs_text = imgs.textimgs_json = json.loads(imgs_text)imgs_json = imgs_json['data']imgs_items = imgs_json['items']for i in imgs_items:try:img_url = i['picUrl']print('*********' + str(m) + '.png********' + 'Downloading...')print('下载的url: ', img_url)urllib.request.urlretrieve(img_url, path + str(m) + '.jpg')m = m + 1except:continueprint('Download complete !')time_stamp = datetime.datetime.now()
print('===start=== at:', time_stamp.strftime('%Y.%m.%d-%H:%M:%S'))getSogouImag('D:/home/oi/data_pac/')time_stamp = datetime.datetime.now()
print('===end=== at:', time_stamp.strftime('%Y.%m.%d-%H:%M:%S'))

搜狗实现的一些解释

文件夹检查块代码: 注意文中的写法 每次rerun , 会删掉存文件的文件夹及其内容,并重新下载

最外层 0-50 循环: 因为我发现搜狗图片的请求,即使我写了一次请求一万个,但最大一次也就给一百个。所以循环50次,每次100个

url_i  : 这个怎么来的?

因为我搜索的的  “戴安全帽工地现场” ,所以对应的链接是: https://pic.sogou.com/pics?query=%E6%88%B4%E5%AE%89%E5%85%A8%E5%B8%BD%E5%B7%A5%E5%9C%B0%E7%8E%B0%E5%9C%BA&w=05009900

打开这个链接,F12 , 看network ,注意关注请求名,注意这个网站是无限下拉的,拉到底出现 更多内容加载时,找一下非图片下载的请求名,也就是下图框起来的这个

框中部分复制出来长这样:https://pic.sogou.com/napi/pc/searchList?mode=1&start=144&xml_len=48&query=%E6%88%B4%E5%AE%89%E5%85%A8%E5%B8%BD%E5%B7%A5%E5%9C%B0%E7%8E%B0%E5%9C%BA

自己去浏览器发一下这个请求,会发现返回是一个 Jason, 里面有很多图片的下载URL,我们看一下这个请求,会发现其实它指定了  start = 144 , xml_len = 48, 也就是从144开始,一次拿48个。

于是我们粗暴的指定 start = 0, xml_len = 10000,会发现返回最大就是100个,不会到10000,于是我们使用了上文中的“最外层 0-50 循环

url指定好了之后:获取Jason

imgs = requests.get(url_i)
imgs_text = imgs.text
 imgs_json = json.loads(imgs_text)
imgs_json = imgs_json['data']
imgs_items = imgs_json['items']

简单的说就是请求这个URL,得到那一大串jason ,这里必须提一下每个网站的jason 应该会指定不同的格式,所以  imgs_json = imgs_json['data']  ,imgs_items = imgs_json['items'] 这里会因网站而各不相同。我是debug看了下 Jason的长相,然后手动指定 这两个 属性名。

下载图片 : 每次的Jason会给100张图,图的下载URL 的属性名叫  picUrl ,同理这个也是debug 看Jason内容找到的,不同网站可能叫法不一样。

try cactch代码部分 :发现有些图片可能会报错下不下来,所以 套个异常,一旦失败,跳过失败的继续爬下一张。

python图片爬虫,指定关键字爬取Google图片+搜狗图片相关推荐

  1. [day2]python网络爬虫实战:爬取美女写真图片(增强版)

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.实现 1.分析url格 ...

  2. [day1]python网络爬虫实战:爬取美女写真图片

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.实现 1.分析url格 ...

  3. [day4]python网络爬虫实战:爬取美女写真图片(Scrapy版)

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.Scrapy简介 4. ...

  4. Python 网络爬虫实战:爬取知乎回答中的全部图片

    平时逛知乎的时候,经常能看到很多很棒的图片,精美的壁纸,搞笑的表情包,有趣的截图等等,总有想全部保存下来的冲动. 于是在一个小老弟的拜托之下,我把之前的知乎爬虫改造了一下,改装成了一个可以下载知乎回答 ...

  5. Python【爬虫实战】爬取美女壁纸资源

    Python[爬虫实战]爬取美女壁纸资源 一:首先选取一个网站,这里我们选择了一个壁纸网站 二:进入网站,我们可以看到很多图片放在一页里 三:按下F12开发者工具,点击Elments查看网页的代码 四 ...

  6. Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(一)

    经过一晚上的休息,我已经重新从阴影中站了起来,并重新发现了一个人性化的网站,一起来看看这个网站吧 来到了人民教育出版社的官网,一看,顿时晕眩三秒,我昨天的努力不都白费了吗,只得重新打起精神,研究一下这 ...

  7. Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(二)

    文章目录 思路梳理 封装函数 重要提示 系列文章 思路梳理 我们打开网页,可以看到这其中有许多链接,我们可以查看一下网页源代码,可以看到如我们所期盼的一样,这里有许多的链接,我们只需要把链接爬取出来就 ...

  8. python按关键字爬取必应高清图片

    通过查询前人的博客,发现必应可通过url按关键字查找图片: https://www.bing.com/images/async?q=查询关键字&first=图片编号&count=图片数 ...

  9. python爬虫:新手爬取NASA每日精选图片

    作为一位科幻爱好者,初学python后,便想要使用python爬虫爬些漂亮的宇宙图片,于是乎就把目标瞄准了NASA的每日精选图片. 不过话说回来,毕竟NASA这样的官方组织我们还是要看看是否允许爬虫访 ...

  10. python3.6爬虫案例:爬取朝秀帮图片

    一.写在前面 之前写的两篇博客: python3.6爬虫案例:爬取百度歌单点击打开链接: python3.6爬虫案例:爬取顶点小说(爱看小说同学的福利)点击打开链接 第一个案例写了如何在百度音乐歌单中 ...

最新文章

  1. 《Science》杂志:机器学习究竟将如何影响人类未来的工作?
  2. 运用单例模式、建造者模式和策略模式实现异步加载Android联系人资料
  3. [X11forword]Display remote application with X11 forword / 远程显示linux服务器GUI
  4. Temporal Segment Networks(TSN)实验及错误日志
  5. html css animation,css animation是什么?
  6. 【Hoxton.SR1版本】Spring Cloud Stream消息驱动
  7. 安全可靠的透明加密软件
  8. ECharts柱状图常见效果
  9. springboot 删除路径下面所有文件_Spring boot内置Tomcat的临时目录被删除导致文件上传不了-问题解析...
  10. 程序员真的需要一台 Mac 吗?
  11. 聊天系统php源码,PHP聊天系统DuckCha 功能非常强大的在线聊天程序源码
  12. 向量个数,向量维数,向量空间维数
  13. python高德地图可视化_【可视化】python地图可视化_Folium
  14. 阿里云SLB配置HTPPS方式访问
  15. usb中cdc dfu hid msc的区别
  16. Linux Shell学习笔记:exit退出状态代码
  17. C - Unusual Product
  18. 牧牛区块链生态,区块链应用于金融领域的优势
  19. three.js全景贴图
  20. linux下限制CPU使用率的3种方法

热门文章

  1. linux网络重设,Linux ADSL拨号上网
  2. 考研数学 第7讲 零点问题和微分不定式
  3. 小黄鸡(小贱鸡)机器人
  4. Unity Application Block 1.0系列(5): 使用BuildUp让已存在对象实例也支持依赖注入
  5. 线性与非线性规划:可行方向法
  6. 明解C语言 【日】 柴田望洋 第十章 指针 代码清单和练习代码
  7. Flink 利器:开源平台 StreamX 简介
  8. 计算机代码查重软件,文件查重程序
  9. 双击打不开pycharm问题
  10. C语言之字符串(草稿)