目标

爬取糗事百科上的“热图”的图片并保存在一个新建文件夹当中

过程

一、获得当前网页

使用的是requests爬虫,在使用requests库爬取网页中有介绍。

import requestsr = requests.get('https://www.qiushibaike.com/imgrank/')#获取网页链接
rtext = r.text
#rtext #打开用来查看是否获取成功

二、解析网页并提取图片

这里使用正则表达式,在正则表达式中有介绍。
首先,我们浏览器打开要爬取的网页,审查元素,定位到图片位置


通过观察,所有图片都位于 class=thumb的div的img 下
我们将这片代码拿出来观察

<div class="thumb"><a href="/article/123937399" target="_blank">
<img src="//pic.qiushibaike.com/system/pictures/12393/123937399/medium/KPE3TKKQTDJZN383.jpg" alt="糗事#123937399" class="illustration" width="100%" height="auto">
</a>
</div>

设计正则表达式

ex = '<div class="thumb"> .*?<img src="(.*?)" alt.*?</div>'
import reex = '<div class="thumb"> .*?<img src="(.*?)" alt.*?</div>'
imglist = re.findall(ex,rtext,re.S)#搜索字符串;用于解析的都用re.S

三、保存图片

需要用到os库,创建一个文件夹qiutulist,将爬取出来的图片保存进去,但是需要注意保存图片的名字不能重复。

import osif not os.path.exists('./qiutulibs'):os.mkdir('./qiutulibs')#如果该目录不存在,则创新一个for src in imglist:src = 'http:'+src#拼接成一个完整的链接imgdata = requests.get(src).content#请求到了图的二进制数据#生成图片名称imgname = src.split('/')[-1]#图片存储路径imgpath = './qiutulibs/'+imgnamewith open(imgpath,'wb') as fp:fp.write(imgdata)print(imgname,'下载成功!')

split()函数语法:str.split(str="",num=string.count(str))[n]
参数说明:
str:表示为分隔符,默认为空格,但是不能为空(’’)。若字符串中没有分隔符,则把整个字符串作为列表的一个元素
num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量
[n]:表示选取第n个分片

另外 with open() as fp 的用法

整合

import requests
import reimport os#文件#创建文件夹,用来保存所有图片
if not os.path.exists('./qiutulibs'):os.mkdir('./qiutulibs')r = requests.get('https://www.qiushibaike.com/imgrank/')
rtext = r.textex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'
imglist=re.findall(ex,rtext,re.S)
#img
for src in imglist:src = 'http:'+src#拼接成一个完整的链接imgdata = requests.get(src).content#请求到了图的二进制数据#生成图片名称imgname = src.split('/')[-1]#图片存储路径imgpath = './qiutulibs/'+imgnamewith open(imgpath,'wb') as fp:fp.write(imgdata)print(imgname,'下载成功!')


==============================================================================

进阶

实现多页爬取

上述方法智能爬取一页的图片,但该系列有13页,这就需要分页爬取

分析

第二页链接:https://www.qiushibaike.com/imgrank/page/2/
第三页链接:https://www.qiushibaike.com/imgrank/page/3/

并且https://www.qiushibaike.com/imgrank/page/1/也能打开第一页链接
由此,可以设置一个模板链接,拼接到后面的数字

url='https://www.qiushibaike.com/imgrank/page/'for pagenum in range(1,13):pagen = 'pagenum'#这里要注意字符串的转化,否则会报错rurl = format(url+pagen)#对应页码的url#把上述代码的解析都放在这个循环里

实现

#分页爬取import requests
import reimport os#文件#创建文件夹,用来保存所有图片
if not os.path.exists('./qiutulibs'):os.mkdir('./qiutulibs')#设置一个通用url模板
url='https://www.qiushibaike.com/imgrank/page/'
#pagenum = 2  https://www.qiushibaike.com/imgrank/page/1/for pagenum in range(1,13):pagen = 'pagenum'rurl = format(url+pagen)#对应页码的urlr = requests.get(rurl)r.encoding='utf-8'rtext = r.text#解析操作ex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'imglist=re.findall(ex,rtext,re.S)#imgfor src in imglist:src = 'http:'+src#拼接成一个完整的链接imgdata = requests.get(src).content#请求到了图的二进制数据#生成图片名称imgname = src.split('/')[-1]#图片存储路径imgpath = './qiutulibs/'+imgnamewith open(imgpath,'wb') as fp:fp.write(imgdata)print(imgname,'下载成功!')

使用Requests爬取网页图片并保存相关推荐

  1. node.js 爬虫 实现爬取网页图片并保存到本地

    node.js 爬虫 实现爬取网页图片并保存到本地 没有废话直接看代码 /*** 请求网站数据* 将数据保存本地文件*/ //不同协议引用不同模块,http https const http = re ...

  2. python爬取一张图片并保存_python爬取网页图片并保存到本地

    先把原理梳理一下:首先我们要爬取网页的代码,然后从中提取图片的地址,通过获取到的地址来下载数据,并保存在文件中,完成. 下面是具体步骤: 先确定目标,我挑选的是国服守望先锋的官网的英雄页面,我的目标是 ...

  3. java爬取网页并保存_第九讲:Python爬取网页图片并保存到本地

    上一讲我们说了如何把网页的数据通过分析后存储到数据库,我们这次讲如何将网页上的图片提取并下载到本地. 思路如下: 我们本次要爬取的是昵图网首页的图片. 1.首先分析我们要爬取的网页的代码结构,每个网页 ...

  4. 第九讲:Python爬取网页图片并保存到本地

    上一讲我们说了如何把网页的数据通过分析后存储到数据库,我们这次讲如何将网页上的图片提取并下载到本地. 思路如下: 我们本次要爬取的是昵图网首页的图片. 1.首先分析我们要爬取的网页的代码结构,每个网页 ...

  5. python爬取一张图片并保存_第九讲:Python爬取网页图片并保存到本地

    上一讲我们说了如何把网页的数据通过分析后存储到数据库,我们这次讲如何将网页上的图片提取并下载到本地. 思路如下: 我们本次要爬取的是昵图网首页的图片. 1.首先分析我们要爬取的网页的代码结构,每个网页 ...

  6. 第十讲:Python爬取网页图片并保存到本地,包含次层页面

    上一讲我们讲到了从昵图网的首页下载图片到本地,但是我们发现首页上面的大部分链接其实都可以进入到二级页面. 在二级页面里面,我们也可以同样进行图片的下载,通过层层循环我们可以把网址的一部分图片下载到本地 ...

  7. python爬取动态页面并保存_第十讲:Python爬取网页图片并保存到本地,包含次层页面...

    上一讲我们讲到了从昵图网的首页下载图片到本地,但是我们发现首页上面的大部分链接其实都可以进入到二级页面. 在二级页面里面,我们也可以同样进行图片的下载,通过层层循环我们可以把网址的一部分图片下载到本地 ...

  8. python用requests爬取png图片并保存到本地

    版权声明:转载请注明作者(独孤尚良dugushangliang)出处:https://blog.csdn.net/dugushangliang/article/details/99634816 imp ...

  9. 一个咸鱼的python_一个咸鱼的Python爬虫之路(三):爬取网页图片

    学完Requests库与Beautifulsoup库我们今天来实战一波,爬取网页图片.依照现在所学只能爬取图片在html页面的而不能爬取由JavaScript生成的图. 所以我找了这个网站 http: ...

  10. 使用Python爬取网页图片

    使用Python爬取网页图片 李晓文 21 天前 近一段时间在学习如何使用Python进行网络爬虫,越来越觉得Python在处理爬虫问题是非常便捷的,那么接下来我就陆陆续续的将自己学习的爬虫知识分享给 ...

最新文章

  1. 秒懂上线必不可少的安全测试!
  2. 两个多选框(select)之间值的左右上下移动
  3. VS code配置docker的shell环境
  4. mysql下一个版本号_mysql下一个版本应该且实现并不复杂增加的常用功能
  5. Neo4j Java REST绑定–第2部分(批处理)
  6. 《单线程的build hash table、write rows to chunks、hash join的步骤以及流程图》
  7. 运用Logistic模型检验影响企业现金分红的主要因素
  8. VB讲课笔记03:对象及其操作
  9. Android程序员重头学Synchronized
  10. 二维码识别超级解决方案,工业级别
  11. Java 抽象工厂模式(类图及实现)
  12. (10.1.3.4)UI设计,扁平化还是拟物化?
  13. Oliver的成绩(score)
  14. 2012人类将从“微博体”过渡到“微媒体”。至于你信不信,反正我信了
  15. Matlab 中 residuez函数的使用
  16. ppt怎么压缩,ppt压缩的技巧分享
  17. DS18B20数字温度计使用(转)
  18. MACD怎样判断趋势?巧用MACD指标研判市场的强弱!(实例)
  19. 【填坑】ImportError: no module named zbar
  20. 自己动手搭建 Linux 0.12 编译环境 — Linux主机

热门文章

  1. VHDL实现矩阵键盘
  2. 发票识别OCR和发票扫描仪
  3. mac m1使用免费的hopper demo版本和machoView破解修改iphone上的app
  4. 噪声与振动控制工程手册_轴承噪声种类大全!领取实用轴承手册
  5. 计算机文化第15版快速测试答案,《计算机文化基》第1次作业及答案.doc
  6. 比管理时间重要 1000 倍的,是管理精力
  7. linux下安装mysql
  8. 对称加密算法(DES、3DES、AES)
  9. 手把手教你如何建立U盘免疫文件夹
  10. 影响力最大化 IC模型+贪心算法