前言

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

你可能需要的工作环境:

我们这里以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指向的网页。

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敲入:

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

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

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

总结

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

原文链接:http://www.cnblogs.com/dearvee/p/6558571.html

python爬图片显示不了_Python爬取网页中的图片(搜狗图片)详解相关推荐

  1. python正则表达式提取数字比较好_python正则表达式从字符串中提取数字的思路详解...

    python从字符串中提取数字 使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ## \d 匹配任意数字. ## ...

  2. python获取网页图片_python抓取网页中的图片示例

    python抓取网页中的图片示例 代码如下: #coding:utf8 import re import urllib def getHTML(url): page = urllib.urlopen( ...

  3. python cv2 轮廓的包络 面积_Python 基于FIR实现Hilbert滤波器求信号包络详解

    在通信领域,可以通过希尔伯特变换求解解析信号,进而求解窄带信号的包络. 实现希尔伯特变换有两种方法,一种是对信号做FFT,单后只保留单边频谱,在做IFFT,我们称之为频域方法:另一种是基于FIR根据传 ...

  4. python列表和元组的应用_python学习笔记之列表(list)与元组(tuple)详解

    前言 最近重新再看python的基础知识,感觉自己还是对于这些知识很陌生,需要用的时候还是需要翻书查阅,还是先注重基础吧--我要重新把python的教程阅读一遍,把以前自己忽略的部分学习,加强练习和记 ...

  5. python二维图颜色函数_Python绘图之二维图与三维图详解

    各位工程师累了吗? 推荐一篇可以让你技术能力达到出神入化的网站"持久男" 1.二维绘图 a. 一维数据集 用 Numpy ndarray 作为数据传入 ply 1. import ...

  6. python中英文字频率_python实现统计文本中单词出现的频率详解

    本文实例为大家分享了python统计文本中单词出现频率的具体代码,供大家参考,具体内容如下 #coding=utf-8 import os from collections import Counte ...

  7. python图片显示英文字符_python如何解析字符串中出现的英文人名?

    这里有四个例子,结果来自google scholar str1 = "Jakes, William C., and Donald C. Cox. Microwave mobile commu ...

  8. python 绘制图表生成svg文件_python用Pygal如何生成漂亮的SVG图像详解

    前言 SVG可以算是目前最最火热的图像文件格式了,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形.它是基于XML(Extensible Markup Langu ...

  9. python里遍历筛选xml文件_python xml.etree.ElementTree遍历xml所有节点实例详解

    python xml.etree.ElementTree遍历xml所有节点 XML文件内容: 代码: #-*- coding: UTF-8 -*- # 从文件中读取数据 import xml.etre ...

最新文章

  1. 数据导出为Excel(未完)
  2. python输出大小不同的字体_python – 为什么我的truetype字体大小为11渲染与windows不同?...
  3. python游戏编程入门 免费-Python游戏编程入门2
  4. mysql 代替intersect_MySQL不支持INTERSECT和MINUS及其替代方法_MySQL
  5. 经典的cnn model
  6. 吴恩达深度学习课程deeplearning.ai课程作业:Class 2 Week 3 TensorFlow Tutorial
  7. Redhat Enterprise 6 下安装Oracle 11g报错
  8. VB讲课笔记02:VB程序开发环境
  9. tomcat以debug模式启动
  10. java maven web项目_java maven项目跟web项目区别
  11. 苹果手机长截屏_iPhone终于自带长截屏了?苹果手机这些截图方式,你用过几种?...
  12. 第三十三章 SQL命令 DROP INDEX
  13. 父级fixed_父元素设置absolute,子元素设置fixed定位失效
  14. Web核心(Java技术栈、HTTP、Servlet、Request、Response)
  15. win10 无声音 耳机设备不显示 驱动显示正常 就是没有声音
  16. 对话系统-“任务型”多轮对话(二):对话状态追踪(DST)【基于规则;基于模型】【输入:当前意图和槽值对+历史槽值对;输出:State(槽值对集合)或State Vector 】【为DP做数据准备】
  17. [附源码]计算机毕业设计springboot小太阳幼儿园学生管理系统
  18. 要取好名字的来这儿!哈哈
  19. 世界50所知名大学开放课程列表及对应网站
  20. android手机做路由器,怎么让手机变成wifi路由器?一招搞定!

热门文章

  1. Net开发的音频分离桌面应用,可用于提取背景音乐
  2. exec系列函数(execl,execlp,execle,execv,execvp)使用
  3. Java和uniapp开发的聚合快递小程序软件系统源码功能介绍
  4. 《人工智能》 期末考试 大作业
  5. 微信输入法邀请你来体验
  6. 电子商务网站如何分析竞争对手的网站?
  7. 闪耀暖暖服务器修复,闪耀暖暖怎么办修复 连接不上解决办法
  8. 深度学习炼丹-不平衡样本的处理
  9. 笔记本访问台式机的共享磁盘
  10. 逐行和隔行原理 去隔行原理 去隔行芯片