前言

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

你可能需要的工作环境:

我们这里以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,是爬虫诸多环节中的关键

总结

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

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

  1. python爬虫(二十四)爬取汽车之家某品牌图片

    爬取汽车之家某品牌图片 需求 爬取汽车之家某品牌的汽车图片 目标url https://car.autohome.com.cn/photolist/series/52880/6957393.html# ...

  2. python爬虫(一):正则表达式爬取网页文本

    文章目录 1 正则表达式 2 网页文本爬取 2.1 单页文本 2.2 多页文本 2.2.1 演示文本 2.2.2 文本信息获取 3 实战记录 3.1 网页纯文本处理 3.1.1 常规网页 3.1.2 ...

  3. 用python爬取网页数据并存入数据库中源代码_Python爬取51cto数据并存入MySQL方法详解...

    [] 实验环境 1.安装Python 3.7 2.安装requests, bs4,pymysql 模块 实验步骤1.安装环境及模块 可参考https://www.jb51.net/article/19 ...

  4. python爬虫数据分析项目 双十一_Python爬取淘宝商品数据,价值千元的爬虫外包项目!...

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 完整代码可以点击下方链 ...

  5. python爬虫公众号音频源代码_python爬取音频下载的示例代码

    抓取"xmly"鬼故事音频 import json # 在这个url,音频链接为JSON动态生成,所以用到了json模块 import requests headers = { & ...

  6. Python 爬虫进阶篇-利用beautifulsoup库爬取网页文章内容实战演示

    我们以 fox新闻 网的文章来举例子,把整篇文章爬取出来. 首先是标题,通过结构可以看出来 class 为 article-header 的节点下的 h1 里的内容即是标题,通过 string 可以获 ...

  7. python实现qq登录腾讯视频_Python爬取腾讯视频评论的思路详解

    一.前提条件 安装了Fiddler了(用于抓包分析) 谷歌或火狐浏览器 如果是谷歌浏览器,还需要给谷歌浏览器安装一个SwitchyOmega插件,用于代理服务器 有Python的编译环境,一般选择Py ...

  8. Python爬虫实战(2)之爬取NBA球队各个球员头像图片

    1.目标页面 2.页面分析 1.每个队的球员列表都在 class="team_name"的span下的a标签的href下 2.每个球员的头像图标url 为 class=" ...

  9. python爬虫入门实战---------一周天气预报爬取_Python爬虫入门实战--------一周天气预报爬取【转载】【没有分析...

    Python爬虫入门实战--------一周天气预报爬取[转载][没有分析 Python爬虫入门实战--------一周天气预报爬取[转载][没有分析] 来源:https://blog.csdn.ne ...

最新文章

  1. putchar(c1)在C语言中表示,C语言中的getchar和putchar详解
  2. Netmeeting的四个端口
  3. Dokcer容器实战之部署论坛
  4. linux之ip route命令
  5. 高等数学下-赵立军-北京大学出版社-题解-练习12.2
  6. session 的 源码
  7. Python学习笔记:PMT与PV函数
  8. python几个版本的区别-Python的这几个版本不同
  9. 【设计模式】 模式PK:命令模式VS策略模式
  10. [Java] 蓝桥杯ADV-175 算法提高 三个整数的排序
  11. Windows Vista操作系统秘技(1-5)
  12. 无线AP与无线路由器都有些什么区别?(二)
  13. MessageBox的用法
  14. 印度官方语言有几种_印度货币上有17种语言,你知道每种语言有多少人在用吗?...
  15. Git commit文件提交到仓库失败原因——Author identity unknown
  16. Oracle AutoVue 使用范围
  17. CentOS-6.5操作系统环境安装优化
  18. 计算机主板上的模块安装和拆,更换计算机主板上的内存模块插槽需要多少费用?...
  19. 谈谈CornerStone这个工具的使用
  20. 一篇优秀的硕士毕业论文是怎么写成的

热门文章

  1. php产生订单号不重复,php如何生成不重复订单号
  2. 《深入理解 Spring Cloud 与微服务构建》第十四章 服务链路追踪 Spring Cloud Sleuth
  3. 【JAVA SE】第四章 变量和方法
  4. 系统监控之SNMP协议理解
  5. WordPress文章阅读量统计和显示(非插件, 刷新页面不累加)
  6. C#设计模式-策略者模式
  7. __set() And __get() 使用详解.
  8. QT中串口通信程序(转)
  9. XML类型的SQL参数
  10. Cesium中常用的一些地理数据文件 以及数据相关的东西