​ ”明月如霜,好风如水,清景无限 “

爬取图片,是一项很常见的需求,后期文远会尝试一些反反爬策略爬取一些美妙的图片,尽请期待。

直接分析,找到只有图片的网址:
同样打开开发者模式,发现每一张图片对应一个class=“thumb”,如下图:

从而找到了这样一个字段,

<img src="//pic.qiushibaike.com/system/pictures/12379/123795110/medium/BWSV4O39WTP07EN5.jpg" alt="糗事#123795110" class="illustration" width="100%" height="auto">

根据数据解析的知识(正则,bs4 ,xpath),咋们先来最难的,其实文远也没弄太明白。照葫芦画瓢而已,

ex='<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'

.*?代表的是任意字段,匹配的是开头特征为<div class="thumb">,中间任意,再到接近目标网址开头的<img src=,而后是匹配网址字段用"(.*?)"代替,结束的标志是 alt.*?</div>,与上面是一样的,意思是alt开头,</div> 结尾。
来张清楚点的纯照片地址来源:

分析结束,上代码:

import requests
import re
import os
import numpy as np
​
headers={'User=Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36'
}
if not os.path.exists('./糗百'):os.mkdir('./糗百')all_img_list=[]
url='https://www.qiushibaike.com/imgrank/page/{}/'

准备好,库和参数等,,,

for pageNum in range(1,11):new_url=url.format(pageNum)
#     print(new_url)page_text=requests.get(url=new_url,headers=headers).textex='<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'img_src_list=re.findall(ex,page_text,re.S)all_img_list.append(img_src_list)

还是上次的问题,总页面数量先跳过,暂定10页,这里最重要的就是正则表达式这句,记住re.S代表多行匹配(m单行),此时

all_img_list维度为(10*25)
all_img=np.array(all_img_list)
all_img=all_img.reshape(250,)

维度转一下,转为(250,)

for index,img in  enumerate(all_img):img_url='https:'+imgimg_data=requests.get(url=img_url,headers=headers).contentimg_name=str(index)+'.jpg'img_path='./糗百/'+img_namewith open(img_path,'wb') as f:f.write(img_data)print(img_name,",下载成功!!!!!!!!")

这里便结束了,需要注意的是,照片是二进制文件,.content的返回值才是二进制,文远个人建议的命名方式就是数字,比较清晰明了。除此之外,注意爬取的all_img_list没有带协议头,需要加上’https:’。

放上代码运行图:

最终的文件:

当然,本文的完整代码上传到了码云,点击阅读原文即可,记得Star啊

END

作者:不爱夜跑的影迷不是好程序猿
喜欢的话请关注点赞

爬取糗事百科上的照片相关推荐

  1. 14. python爬虫——基于scrapy框架爬取糗事百科上的段子内容

    python爬虫--基于scrapy框架爬取糗事百科上的段子内容 1.需求 2.分析及实现 3.实现效果 4.进行持久化存储 (1)基于终端指令 (2)基于管道 [前置知识]python爬虫--scr ...

  2. Python爬虫实战(1):爬取糗事百科段子

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  3. python爬虫经典段子_Python爬虫实战(1):爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

  4. JavaScript获取本机浏览器UA助力Python爬取糗事百科首页

    问题背景: 使用Python编写爬虫时,经常会遇到反爬机制,例如网站要求必须使用浏览器访问.就像下面的403错误: 或者下面这种错误信息: 一般来说,这是遇到反爬机制了,对方要求使用浏览器访问.这时可 ...

  5. 读书笔记(4)——python爬取糗事百科,并存到MySQL中

    2019独角兽企业重金招聘Python工程师标准>>> 安装MySQL.使用phpStudy集成工具来安装MySQL服务器,或者可以用USBwebserve进行安装. 打开USBwe ...

  6. python实现数据爬取——糗事百科爬虫项目

    python实现数据爬取--糗事百科爬虫项目 # urllib.request 请求模块 import urllib.request # re 模块使 Python 语言拥有全部的正则表达式功能. i ...

  7. 转 Python爬虫实战一之爬取糗事百科段子

    静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...

  8. Python爬虫学习笔记 -- 爬取糗事百科

    Python爬虫学习笔记 -- 爬取糗事百科 代码存放地址: https://github.com/xyls2011/python/tree/master/qiushibaike 爬取网址:https ...

  9. 爬虫第四战爬取糗事百科搞笑段子

    又开始了新的篇章,本熊继续一个Python小白的修行之路,这次要爬取糗事百科主页的段子,恩 ..看起来不错的样子,只是段子不能吃 ,不然,啧啧... 相信很多人有去糗百看段子减压的习惯,如果能把这些段 ...

最新文章

  1. 复制构造函数(拷贝构造函数)
  2. bottle嵌入html,css,js
  3. 枚举(Enumerations)
  4. Linux中的Diff和Patch
  5. SpringBoot 整合Shiro实现动态权限加载更新+Session共享+单点登录
  6. 无法读取源文件或磁盘_系统监控之磁盘和网络监控工具
  7. python控制excel选择区域_python操作excel常用的方法
  8. qxdm无法安装问题闪一下_关于QXDM的安装,解决Win7下QIK报错的问题
  9. 【第135期】游戏策划:给@蒙蒙水雾的简历分析
  10. snipaste截图软件安装各种问题解决办法
  11. 后端开发工程师的工作流程是怎样的
  12. PCB十六大可靠性测试,看看您的板是否经得起测试?
  13. 标梵微信小程序开发价格之做一个小程序要多少钱?
  14. adobe illustrator 绘制平行四边形
  15. vue不具名插槽与具名插槽
  16. 一个电商数据分析师的经验总结
  17. WinRAR修复解压文件
  18. 电子商务毕业论文php,基于PHP的校园电子商务系统的设计与实现.doc
  19. CKP.CMP工作原理===
  20. Volume数据存储详解

热门文章

  1. Asp .NetCore 从数据库加载配置(一)
  2. Spatial-Temporal Person Re-identification
  3. C++求解近似比例(比例的压缩)
  4. 一文带你了解MySQL之undo日志
  5. 真实时在线K歌,全音乐版权支持|网易云信一体化实时合唱解决方案有一套!...
  6. C# 对象转Json序列化
  7. 浪漫表白编程丨程序员的520表白代码 | 程序员专属情人节表白网站
  8. android 7.1 白屏,苹果发布iOS 7.1:“白屏死机”现象好多了
  9. 重启redis服务器的常用命令
  10. HDR渲染器的实现(基于OpenGL)