本文首发于公众号「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一键保存了半佛老师所有的骚气表情包的更多相关文章

  1. 如何批量修改网页 更新网站 一键保存 windows查看和排序

    批量打开需要修改的网页,一键保存:一个网站会由很多网页组成,当需要大量更新的时候,如果一个个进行打开修改,效率会很低,内容修改不多,且容易修改的时候,可以用editplus这种小编辑软件批量打开,批量 ...

  2. python一键电影搜索与下载

    代码地址如下:http://www.demodashi.com/demo/14313.html python一键电影搜索与下载 概述 使用python搜索并爬取豆瓣电影信息,包括评分,主演,导演,类型 ...

  3. 用Python一键搭建Http服务器的方法

    用Python一键搭建Http服务器的方法 Python3请看 python -m http.server 8000 & Python2请看 python -m SimpleHTTPServe ...

  4. Python一键转Jar包,Java调用Python新姿势!

    粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文.言归正传,咱们开始吧! 本文结构: 需求背景 进击的Python Java和Pytho ...

  5. 微信小程序之base64图片如何预览与一键保存到本地相册?

    需求:由于后台服务器各方面的限制,现在服务器返回的图片是base64格式的,小程序端需要支持预览图片和多个图片一键下载功能 一.如何预览base64位图片? WXML页面:item.src的值是bas ...

  6. Python开发个人专属表情包网站

    “表情包”是一种利用图片来表示感情的一种方式.表情包是在社交软件活跃之后,形成的一种流行文化,表情包流行于互联网上面,基本人人都会发表情. 曾经你是否也有过找不到表情包去应对别人的时候. 今天小编分享 ...

  7. Python自动生产表情包

    作为一个数据分析师,应该信奉一句话--"一图胜千言".不过这里要说的并不是数据可视化,而是一款全民向的产品形态--表情包!!!! 表情包不仅仅是一种符号,更是一种文化--是促进社交 ...

  8. python爬虫入门02:教你通过 Fiddler 进行手机抓包

    哟~哟~哟~ hi起来 everybody 今天要说说怎么在我们的手机抓包 通过 python爬虫入门01:教你在Chrome浏览器轻松抓包 我们知道了 HTTP 的请求方式 以及在 Chrome 中 ...

  9. python截取视频制作动态表情包+文字

    1:安装moviepy库 2:安装IPython库 代码如下: from moviepy.editor import * from IPython.display import Image def B ...

随机推荐

  1. java中变量命名和引用变量的一个坑

    这次有两个主题,第一个太简单啦,就是java中变量的命名规则,纯记忆性东西.第二个主题,就是讨论一下对象引用变量的一个注意点.

  2. LPHW-积累-ex1-6

    Learn Python The Hard Way  ex0  介绍了各个操作系统下python的安装:强调了初学者最好使用简单的编辑器,不要使用IDE环境 ex1 使用 print 输出简单的字符串 ...

  3. Android必知必会--使用shape制作drawable素材

    前言 最近看到朋友制作的Android APP使用了极少的图片,但是图形却极其丰富,问了之后得知是使用shape绘制的,有很多优点. 下面是我整理的一些素材: 预览 下面是图片预览: 代码 布局文件 ...

  4. python基本面试题

    https://www.cnblogs.com/changwentao/p/9432166.html

  5. 基于STM8的GPIO操作---STM8-第一章

    1. 综诉 也许单片机在你看来是一件不太容易的事,但据我所知,单片机,无非就是控制它的GPIO口,所以可以看出,学会如何操作控制GPIO口对使用单片机来说是很重要的一件事. 在装载STM8的单片机中, ...

  6. window的cmd命令行下新增/删除文件夹及文件

    新增文件夹 (md / mkdir) md <folderName>: folderName 就是文件路径,只输入文件夹名称时表示在当前目录下创建文件夹. 比如:md F:\test\pr ...

  7. Java有序数组的实现

    package 有序数组; public class OrdArray { private long[]array; private int nElems; //初始化 public OrdArray ...

  8. Appscan_web安全测试工具 (含修改启动浏览器的方法)

    安全测试应该是测试中非常重要的一部分,但他常常最容易被忽视掉. 尽管国内经常出现各种安全事件,但没有真正的引起人们的注意.不管是开发还是测试都不太关注产品的安全.当然,这也不能怪我们苦B的“民工兄弟” ...

  9. MYSQL系列之(二)

    上一篇文章讲的是mysql的基本操作,这一篇会有一点难以理解,本节主要内容mysql视图,存储过程,函数,事务,触发器,以及动态执行sql 视图view 视图是一个虚拟表,其内容由查询定义.同真实的表 ...

  10. Docker、DAOCloud

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...