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

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

直接分析,找到只有图片的网址:
同样打开开发者模式,发现每一张图片对应一个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. MTK DDR不能兼容分析
  2. wchar_t 的输出问题
  3. 无法生成部件汇总表_RFID在汽车零部件企业仓储物流中的应用
  4. 字符串的全排列JAVA实现
  5. virtualbox linux通用网卡,详解VirtualBox + CentOS 虚拟机网卡配置
  6. Excel如何将数据填充完下方的空白单元格
  7. Windows 远程桌面(RDP)客户端相关工具
  8. python:BeautifulSoup解析爬取网页文章demo
  9. linux云主机登陆教程,登录linux云服务器的详情步骤
  10. selenium Gird
  11. Chrome 设置黑色模式
  12. 在vc中作用mapx
  13. MNL——多项Logit模型学习笔记(二)
  14. 关于linux 僵尸进程
  15. eBox(stm32) 之中断结构
  16. C3P0 连接问题 An attempt by a client to checkout a Connection has timed out.
  17. 小小爬虫成长记第一天
  18. C++多线程学习(三)——线程同步之条件变量
  19. 一个 ABAP 开发的新浪微博语义情感分析工具
  20. python的科学计算库有哪些_python科学计算:带你初探scipy库的常量模块和函数模块...

热门文章

  1. 选择排序算法详解之C语言版
  2. 【压测】基准测试、性能测试、压力测试--Sysbench
  3. 从入侵到变现——“黑洞”下的黑帽SEO分析 1
  4. PHP zip压缩与解压
  5. 1.2 拆分字符串,存入数组
  6. linux 3d软件教程,3D-Desktop:超酷的Linux 3D桌面切换器
  7. 魔搭 modelscope
  8. python function at 0x00000_Python 中的函数装饰器和闭包
  9. github 删除仓库内容 上传代码到github仓库
  10. 解析富有童趣的人工智能早教机器人