我用Python一键保存了半佛老师所有的骚气表情包
本文首发于公众号「Python知识圈」,如需转载,请在公众号联系作者授权。
2019年发现两个有意思而且内容比较硬核的公众号。都是同一个人运营的,我们都叫他半佛老师,现实中的职业是风控,公众号内容涉及揭秘灰产的一些坑和硬核科普。文章内容硬核外,再配上大量的沙雕表情包。让整个文章非常有趣。不到一年,两个公众号,每篇文章都有10w+ 的阅读量。19 年年底。半佛老师入驻了 B 站。制作的 B 站视频文案上也和公众号文章一样硬核,配上大量的沙雕表情包。让看视频的读者有时候看着表情包在那里傻笑(包括我),目前 B 站 327 万粉,相当的硬核。

就这样,每天有大量的读者在半佛老师的公众号和 B 站之间来回横向跳动。
说了这么多,今天这篇文章不是给半佛老师打广告的。我仅仅只是我馋他的表情包了。所以今天我用爬虫批量的保存半佛老师公众号文章里面所有的沙雕表情包。
周末在 B 站发了一个保存半佛老师的骚表情包的视频,目前播放量 12万,8000+点赞,大家可以点击文末「阅读原文」直达视频页面。

半佛老师有两个公众号。据我观察,仙人jump 公众号的表情包相对来说多一些。所以今天就以这个公众号为目标。来批量保存里面的沙雕图片或者表情包。

单篇文章表情包爬取
首先。我们要学会爬取一篇文章里面所有的表情包或者图片。比如我们指定一篇文章,打开文章,查看页面源代码。

通过简单查找,我们就可以看到。文章的图片都在date-src后面。

我们用正则表达式去提取这些链接。所有的链接都提取出来,以列表的形式返回。

然后我们需要写一个下载图片的方法。

这样我们用一个for循环就可以把这篇文章里面所有的表情包或者图片全部下载下来了。
所有文章表情包爬取
接下来第2步。我们是需要保存一个公众号所有文章里面所有的表情包或者图片,所以这一步我们需要获取这个公众号所有文章的链接地址。之前我也写过一篇文章,将一个公众号里面所有文章的链接和标题全部爬取下来:拒绝低效!Python教你爬虫公众号文章和链接
我们通过 Charles 抓包,直接抓取电脑 PC 端公众号。

我们通过上滑公众号历史文章,在抓取的链接里面我们可以看到请求和具体的返回数据。它的返回是以 Json 信息的形式。文章的链接就在 Json 信息里面。

这个 Json 看不全,我们复制到在线 json 解析工具里转换一下。

分析请求数据我们发现。链接里面除了 offset 是变化的,其他都是不变的。

用 requests 库请求链接的话,我们是需要给出 headers 信息和 cookies 信息的,笨办法的话,我们可以手动在请求头 Headers 里面找,然后复制过来。这里教大家一个非常简单的方法,我们直接右键,选择 Copy Curl Request。

复制完之后,我们放在转换地址里面。
https://curl.trillworks.com/
在左边粘贴刚才复制的 curl request,下面的语言默认是 Python。右边就会同步转换为 Python requests。

我们把右边的 Python requests 直接复制到编辑器里面就可以了。内容包括 hearders 信息和 cookies 信息,还有对应的参数,这样就避免我们对 cookies 和 headers 一个个去粘复制粘贴。这样是不是比较方便和简单!
这里有个地方注意下,复制过来的 params 里面有两个值需要去掉,offset 和 count。

因为 offset 我需要把它做成动态的,我把它们放在了开头的基础链接里。

通过 requests 库请求我们就可以获取返回的 Json 信息。然后我们提取 Json 信息里面的文章链接,为了全部获取所有文章。offset 值我们需要放在 range 里面,以 10 的步数往上增长, offset 最大值是多少呢?我们可以通过抓包获取,把公众号文章一直上滑到底,也就是滑动公众号的第 1 篇文章,我们点击这个请求,就可以看到里面的offset值。

把这个值放在 range 值里。

这样的话,这个公众号所有的文章链接,我都以列表的形式返回。返回给之前第 1 步操作的爬取单篇文章所有图片。通过两个循环,公众号下面所有文章里面的所有表情包或者图片都可以批量下载下来。

这样,虽然我没有半佛老师任何的文案,但是我有他硬核而且沙雕的表情包。
总结下:
1、运行代码前抓包通过 Copy Curl Request 到转换工具里获取 headers、cookies、和 params 替换掉我代码中的 headers 相关信息,并把 params 中 offset 和 count 去掉。
2、代码请求里加了代理ip proxy,如果运行报 pxoxy 相关的错,请自行去西刺代理ip更换一个(https://www.xicidaili.com/)免费的。
3、点击阅读原文直达这个项目的 B 站视频版,目前 12万播放量了,有账号的伙伴来个三连加关注啊。
在本公众号后台回复「表情包」获取本文所有的代码。
欢迎关注公众号「Python知识圈」,公众号后台回复关键字,获取更多干货。
回复「英语」:送你英语 7000 单词速记法,亲测非常有效。
回复「编程」:免费获赠2019最新编程资料,认真学完BAT offer 拿到手软。
回复「赚钱」:领取简单可实操的 36 个赚钱的小项目,每天多赚100块零花钱。
我用Python一键保存了半佛老师所有的骚气表情包的更多相关文章
- 如何批量修改网页 更新网站 一键保存 windows查看和排序
批量打开需要修改的网页,一键保存:一个网站会由很多网页组成,当需要大量更新的时候,如果一个个进行打开修改,效率会很低,内容修改不多,且容易修改的时候,可以用editplus这种小编辑软件批量打开,批量 ...
- python一键电影搜索与下载
代码地址如下:http://www.demodashi.com/demo/14313.html python一键电影搜索与下载 概述 使用python搜索并爬取豆瓣电影信息,包括评分,主演,导演,类型 ...
- 用Python一键搭建Http服务器的方法
用Python一键搭建Http服务器的方法 Python3请看 python -m http.server 8000 & Python2请看 python -m SimpleHTTPServe ...
- Python一键转Jar包,Java调用Python新姿势!
粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文.言归正传,咱们开始吧! 本文结构: 需求背景 进击的Python Java和Pytho ...
- 微信小程序之base64图片如何预览与一键保存到本地相册?
需求:由于后台服务器各方面的限制,现在服务器返回的图片是base64格式的,小程序端需要支持预览图片和多个图片一键下载功能 一.如何预览base64位图片? WXML页面:item.src的值是bas ...
- Python开发个人专属表情包网站
“表情包”是一种利用图片来表示感情的一种方式.表情包是在社交软件活跃之后,形成的一种流行文化,表情包流行于互联网上面,基本人人都会发表情. 曾经你是否也有过找不到表情包去应对别人的时候. 今天小编分享 ...
- Python自动生产表情包
作为一个数据分析师,应该信奉一句话--"一图胜千言".不过这里要说的并不是数据可视化,而是一款全民向的产品形态--表情包!!!! 表情包不仅仅是一种符号,更是一种文化--是促进社交 ...
- python爬虫入门02:教你通过 Fiddler 进行手机抓包
哟~哟~哟~ hi起来 everybody 今天要说说怎么在我们的手机抓包 通过 python爬虫入门01:教你在Chrome浏览器轻松抓包 我们知道了 HTTP 的请求方式 以及在 Chrome 中 ...
- python截取视频制作动态表情包+文字
1:安装moviepy库 2:安装IPython库 代码如下: from moviepy.editor import * from IPython.display import Image def B ...
随机推荐
- ThinkPHP的几种路由形式总结
本篇文章总结了ThinkPHP的几种路由形式,分别是普通模式.PATHINFO.REWRITE和兼容模式,希望对各位学习thinkphp的朋友有帮助! thinkphp官方文档里有详细的说明: Thi ...
- POS-商户手续费-从生活剖析,通俗易懂
前言 我们大家日常都在使用pos机,尤其是买衣服,吃火锅,都习惯刷卡.pos机带来的消费便利,也正是市场 对经济的一种促进手段. 今天主要分享下商户手续费这个概念,引出这个概念前,我们先大概说点别的东 ...
- 使用Keras进行深度学习:(二)CNN讲解及实践
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 现今最主流的处理图像数据的技术当属深度神经网络了,尤其是卷积神经网 ...
- 高并发解决方案限流技术-----使用RateLimiter实现令牌桶限流
1,RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率.通常可应用于抢购限流防止冲垮系统:限制某接口.服务单位 ...
- iOS isEqual
如何重写 hash 方法 一个合理的 hash 方法要尽量让 hash 表中的元素均匀分布,来保证较高的查询性能. 如果两个对象可以被视为同一个对象,那么他们的 hash 值要一样. mattt 在文 ...
- gold 30min
- python学习第二节 数据类型、字符编码、文件处理
标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Sets(集合) Dictionary(字典) 数字 #整型 ...
- Ruby学习计划-(0)前言
前言 接触过的编程语言现在来说有C.C++.Java.Object-C.Swift.这几门语言中最熟悉的就是oc了,毕竟靠他吃饭,对于其他几门语言都是初入门径而已,由于本身一直从事iPhone ...
- 基于Java的数字货币交易系统的架构设计与开发
前言 无论是股票交易系统,还是数字货币交易系统,都离不开撮合交易引擎,这是交易平台的心脏.同时,一个优秀的架构设计也会让交易平台的运维和持续开发更加容易.本文基于对开源项目的深入研究,总结了数字货币交 ...
- POJ 3273Monthly Expense(二分答案)
题目链接 思路如下 题意:这一题让我们在一个 n 个数的序列,分成连续的的 m个子串(一个数也可是一个子串),是在所有子串中 和最大的子串 的和最小. 思路:我们可以用 二分法 来一个一个枚举答案,二 ...