Python爬取网页中的图片(搜狗图片)详解

 更新时间:2017年03月23日 09:01:53   作者:dearvee  
没想到python是如此强大,令人着迷,以前看见图片总是一张一张复制粘贴,现在好了,学会python就可以用程序将一张张图片,保存下来。下面这篇文章主要给大家介绍了利用Python3.6爬取搜狗图片网页中图片的相关资料,需要的朋友可以参考下。

前言

最近几天,研究了一下一直很好奇的爬虫算法。这里写一下最近几天的点点心得。下面进入正文:

你可能需要的工作环境:

  Python 3.6官网下载

       本地下载

我们这里以sogou作为爬取的对象。

首先我们进入搜狗图片http://pic.sogou.com/,进入壁纸分类(当然只是个例子Q_Q),因为如果需要爬取某网站资料,那么就要初步的了解它…

进去后就是这个啦,然后F12进入开发人员选项,笔者用的是Chrome。

右键图片>>检查   

发现我们需要的图片src是在img标签下的,于是先试着用 Python 的 requests提取该组件,进而获取img的src然后使用 urllib.request.urlretrieve逐个下载图片,从而达到批量获取资料的目的,思路好了,下面应该告诉程序要爬取的url为http://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD,此url来自进入分类后的地址栏。明白了url地址我们来开始愉快的代码时间吧:

在写这段爬虫程序的时候,最好要逐步调试,确保我们的每一步操作正确,这也是程序猿应该有的好习惯。笔者不知道自己算不算个程序猿哈。线面我们来剖析该url指向的网页。

import requests
import urllib
from bs4 import BeautifulSoup
res = requests.get('http://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD')
soup = BeautifulSoup(res.text,'html.parser')
print(soup.select('img'))

output:

发现输出内容并不包含我们要的图片元素,而是只剖析到logo的img,这显然不是我们想要的。也就是说需要的图片资料不在url  即 http://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD里面。因此考虑可能该元素是动态的,细心的同学可能会发现,当在网页内,向下滑动鼠标滚轮,图片是动态刷新出来的,也就是说,该网页并不是一次加载出全部资源,而是动态加载资源。这也避免了因为网页过于臃肿,而影响加载速度。下面痛苦的探索开始了,我们是要找到所有图片的真正的url 笔者也是刚刚接触,找这个不是太有经验。最后找的位置F12>>Network>>XHR>>(点击XHR下的文件)>>Preview。

发现,有点接近我们需要的元素了,点开all_items 发现下面是0 1 2 3...一个一个的貌似是图片元素。试着打开一个url。发现真的是图片的地址。找到目标之后。点击XHR下的Headers

得到第二行

Request URL:

http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15&width=1536&height=864,试着去掉一些不必要的部分,技巧就是,删掉可能的部分之后,访问不受影响。经笔者筛选。最后得到的url:http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15  字面意思,知道category后面可能为分类。start为开始下标,len为长度,也即图片的数量。好了,开始愉快的代码时间吧:

开发环境为Win7  Python 3.6,运行的时候Python需要安装requests,

Python3.6 安装requests 应该CMD敲入:

pip install requests

笔者在这里也是边调试边写,这里把最终的代码贴出来:

import requests
import json
import urllib

def getSogouImag(category,length,path):
 n = length
 cate = category
 imgs = requests.get('http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category='+cate+'&tag=%E5%85%A8%E9%83%A8&start=0&len='+str(n))
 jd = json.loads(imgs.text)
 jd = jd['all_items']
 imgs_url = []
 for j in jd:
  imgs_url.append(j['bthumbUrl'])
 m = 0
 for img_url in imgs_url:
   print('***** '+str(m)+'.jpg *****'+' Downloading...')
   urllib.request.urlretrieve(img_url,path+str(m)+'.jpg')
   m = m + 1
 print('Download complete!')

getSogouImag('壁纸',2000,'d:/download/壁纸/')

程序跑起来的时候,笔者还是有点小激动的。来,感受一下:

 

 

至此,关于该爬虫程序的编程过程叙述完毕。整体来看,找到需要爬取元素所在url,是爬虫诸多环节中的关键

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • MoviePy简介及Python视频剪辑自动化

    MoviePy简介及Python视频剪辑自动化

    MoviePy是一个用于视频编辑的Python模块,可用于基本操作(如剪切、拼接、字幕插入)、视频合成、视频处理或创建高级效果等。本文给大家介绍MoviePy简介及Python视频剪辑自动化的相关知识,感兴趣的朋友一起看看吧
    2020-12-12
  • PyCharm 创建指定版本的 Django(超详图解教程)

    PyCharm 创建指定版本的 Django(超详图解教程)

    这篇文章主要介绍了PyCharm 创建指定版本的 Django,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • 放弃 Python 转向 Go语言有人给出了 9 大理由

    放弃 Python 转向 Go语言有人给出了 9 大理由

    今年 Stream 团队的主要编程语言从 Python 转向了 Go。本文解释了其背后的九大原因以及如何做好这一转换。下面小编给大家分享放弃 Python 转向 Go语言有人给出了 9 大理由,一起看看吧
    2017-10-10
  • python中return如何写

    python中return如何写

    在本篇文章里小编给大家分享的是一篇关于python中return如何写的知识点总结,需要的朋友们参考学习下。
    2020-06-06
  • Python的speech_recognition库如何将声音转为文字

    Python的speech_recognition库如何将声音转为文字

    这篇文章主要介绍了通过Python的speech_recognition库将声音转为文字,将声音转为文字,除了speech_recognition库,还要依赖pyaudio库,而且mac用户需要安装PortAudio,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • python函数也可以是一个对象,可以存放在列表中并调用方式

    python函数也可以是一个对象,可以存放在列表中并调用方式

    这篇文章主要介绍了python函数也可以是一个对象,可以存放在列表中并调用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • tensorflow 保存模型和取出中间权重例子

    tensorflow 保存模型和取出中间权重例子

    今天小编就为大家分享一篇tensorflow 保存模型和取出中间权重例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python3 map函数和filter函数详解

    python3 map函数和filter函数详解

    这篇文章主要介绍了python3 map函数和filter函数详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • django之静态文件 django 2.0 在网页中显示图片的例子

    django之静态文件 django 2.0 在网页中显示图片的例子

    今天小编就为大家分享一篇django之静态文件 django 2.0 在网页中显示图片的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 详解python的webrtc库实现语音端点检测

    详解python的webrtc库实现语音端点检测

    这篇文章主要介绍了详解python的webrtc库实现语音端点检测,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05

最新评论