BlogDoc
BlogDoc copied to clipboard
我的博文汇总
[原文链接](https://mp.weixin.qq.com/s?__biz=MzUxNjM5MTEyMg==&mid=2247484054&idx=1&sn=45078fa24c753c86d5a1dfe1e218de58&chksm=f9a96b2bcedee23de4c49565c36a4d27c26d9e6c50427e8dcd18b0cb8fbaccadc600e5b72e9b#rd) [我的GitHub博客地址](https://github.com/WeaponZhi/BlogDoc) 接上篇文章[使用Python快速获取公众号文章定制电子书(一)](https://mp.weixin.qq.com/s?__biz=MzUxNjM5MTEyMg==&mid=2247484049&idx=1&sn=267c86a89ab9854fc570b5a8d812dfbb&chksm=f9a96b2ccedee23a68d091925af4c28bc6ae93d45ac931790b75bc51d4ac8b2e41677586805f#rd)。我们现在已经成功的将公众号历史消息的前十条文章给爬取了出来,使用 content_url 这个关键字段,我们便可以轻易的获取文章具体内容,并将文章保存到本地文件中。实际上上面这些东西已经是我们实现爬取公号文章的核心功能了,剩下的就是如何通过某种方式将公众号的所有文章一次性爬取出来。 我们用手机在公众号的历史消息界面中作上拉加载操作,在 Charles 中爬取接口,像之前一样,我们通过 response 找到了我们需要的接口,这次的接口返回很漂亮,是一个 JSON 数据。  看返回,我们发现 general_msg_list 字段类似于上篇文章中的 msgList 的内容,里面是十条文章的数据列表,具体的处理方式和之前也大差不差,而且这里本身就是 JSON 返回,处理起来显然更容易。 我们来看看这个请求接口的 URL 形式: ```python url ="https://https://mp.weixin.qq.com/mp/profile_ext?" \ "action=getmsg&" \ "__biz=MjM5ODIyMTE0MA==&"...
[原文链接](https://mp.weixin.qq.com/s?__biz=MzUxNjM5MTEyMg==&mid=2247484049&idx=1&sn=267c86a89ab9854fc570b5a8d812dfbb&chksm=f9a96b2ccedee23a68d091925af4c28bc6ae93d45ac931790b75bc51d4ac8b2e41677586805f#rd) [我的GitHub博客地址](https://github.com/WeaponZhi/BlogDoc) ## 前言 分享一个笔者最近写的 Python 相关的小 demo,爬取某个公众号的所有历史文章,并导出到本地,方便之后在线下环境直接观看。参考了刘志军的小册[基于Python实现微信公众号爬虫](https://juejin.im/book/5a157c155188254a701eb3c1),有兴趣的同学也可以自行购买。 这个功能还是有一定实际用途的,需求和功能虽然简单明确,但我在开发的过程中,也是遇到了一定的问题,可以说好好的把 Python 爬虫方面的知识复习了一遍。我也将从最基础的抓包开始讲起,希望能提供一个完整爬取流程的简单教程。 ## 抓包 在 Windows 平台,我们经常使用 Fiddler 来进行抓包,笔者使用 Mac,所以比较习惯使用 Charles 来进行抓包。不仅如此,这类工具在开发过程中是非常重要的工具,笔者平时在客户端开发过程中,如果服务端接口还没完成,只要定义好数据结构,通过这类工具的重定向功能,就可以轻易的自己模拟数据来开发了。 用手机抓取 https 接口,需要在手机里安装证书,网上方法很多,我这里就不费篇幅了。 我们打开微信历史消息界面,然后在 Charles 里面找寻接口,通过观察 Response 返回的内容,我们发现了我们需要的请求: ...
>小之的公众号 : **WeaponZhi** ## 前言 上一篇我们介绍了 Octave 的一些基本情况,大家对 Octave 应该已经有了一个基本的了解,我相信看这篇文章的朋友已经在自己的电脑中安装好 Ocatve 了。矩阵的操作是 Octave 的一大特色。这一节,我将讲述 Octave 对于矩阵的一些操作,希望大家在看文章的过程中可以跟着一起敲一下代码,加深一下印象。 ## 矩阵的生成 Octave 中,我们用一个中括号来表示一个矩阵,用分号来分隔每一行,即使在输入的时候不在同一行就像下面这样: ```python >> A = [1 2; 3 4; 5 6]...
>小之的公众号 : **WeaponZhi** ## 前言 各位小伙伴如果是通过 Coursera 上吴恩达的机器学习视频来学习的话,一定听到过 Octave 的大名了,吴恩达强烈推荐大家使用 Octave 来学习机器学习,并且用了完整的一个章节「Octave and Matlab Tutorial」来讲述 Octave 的基本操作。非常实用,也很简单,推荐想使用 Octave 的同学去学习一下。 我在使用 Octave 的过程中,最舒服的地方就是它对矩阵操作的支持非常全面,使用起来也很简单,一些看似很复杂的逻辑,用 Octave 可能一两行就可以轻松解决。我将带大家认识和入门 Octave。 此文分两篇来讲解。 ## 什么是 Octave >Octave...
 >这是「AI 学习之路」的第 3 篇,「Python 学习」的第 3 篇 Python 字符串使用和 C 语言比较类似,但还有一些我们值得注意的地方需要关注,用这篇文章来帮助大家掌握 Python 的字符串吧! ## 编码 不论什么语言,我们都需要考虑一下这个语言的编码问题。「ASCII」编码是我们最熟悉的编码,但它只有 127 个字符被编码到计算机里面了,显然,像中日韩这类国家,语言文字比较特殊,就需要自己来指定编码格式。 比如,中国自己就制定了「GB2312」编码,韩文则是「EUC_KR」,俄语是「KOI8-R」,显然,如果每一个国家都需要制作一个适配的编码,那我们的计算机世界就要乱套了,不同国家之间信息的传输将变的寸步难行。如果电脑里没有某个语言的编码,那就会产生乱码冲突,这是相当麻烦的。 所以,大家商量了一下,就做出了「Unicode」这么个编码格式,它干脆把所有的编码都统一了,只要你用 Unicode 它就能保证没有乱码问题。 但 Unicode 也有缺点。比如如果一个文件是纯英文来写的,那所有的字符实际上都可以用过 ASCII 的 8 位二进制来表示。我们知道...
 >这是「AI 学习之路」的第 6 篇,「Python 学习」的第 6 篇 >小之的公众号 : **WeaponZhi** ## 题外话 这周工作日 5 天,我并没有更新文章,但大家并不要以为小之懒惰了。正好相反,自从上篇的 AI 入门文章后,我自己便开始进行机器学习的系统学习了,这周一到周五,只要有空闲时间,我就开始看吴恩达 Coursera 的视频,可以说是非常痴迷了。 吴教授的课程非常通俗易懂,而且他本人的教学风格也是不紧不慢,循序渐进,甚至有关微积分和线代甚至 Octave 这些知识点都花了比较多的篇幅进行展开讲解,亲身体会后,再次推荐给大家。 目前,机器学习篇我已经学到一半了,实际上本来可以更快一些,但中间的一些微积分和线代的知识点,我又回炉复习了一下。非常庆幸我在大四的时候把高数重新复习了一遍,现在虽说不能完全回想起来,但回炉和记忆的串联算是比较快的,节省了很多的时间。 同时,我现在每天保持一到两题的 LeetCoded 的刷题量,实际上我不太追求说要刷的多快,刷题的目的一来是巩固基础,二来是每天刷一两道,活动下脑子。我每天早上上班前,先打开一道题,然后把题目阅读一下,过个脑子,上班途中就想想思路,如果思路比较清晰,到公司在别人吃早饭的时间,我就把代码提交了,如果思路不太顺,我就工作空闲或者中午的时候在桌上用纸笔画一画,然后晚上下班之后开始码代码。 如果这样的流程一天时间还是想不起来思路,那我就会直接看一下 discuss 或者...
 >这是「AI 学习之路」的第 5 篇,「Python 学习」的第 5 篇 >小之的公众号 : **WeaponZhi** 介绍一下 dict 和 set 这两个数据结构。 ### dict dict 是 Python 内置的字典类型,熟悉 Java 的同学可以把它类比为 Map。dict 使用键值对来存储(key-value),它的查找速度特别快。 dict 一般用在什么场景呢?假设我们需要根据公司名字查找公司地址,按照我们之前的写法,我们需要先建立两个 list ,一个存储公司名字,一个存储公司总部地址,然后查找公司名字,记录好列表位置,再从地址列表查找到具体元素,你还得保证两个表元素位置必须一一对应。不仅如此,如果表很长,那遍历查找效率将会非常低。...
 >这是「AI 学习之路」的第 4 篇,「Python 学习」的第 4 篇 >小之的公众号 : **WeaponZhi** 今天的主题是 Python 的序列类型(Sequence Types),内容很多,干货很足,也是我们平时经常使用的,大家准备好小板凳纸笔吧! **注意**,我不准备再将循环语句和条件语句方面的知识了,比较简单,每种语言这方面的写法区分不大,有兴趣的大家可以自行去查阅一下。 ## list list 是一种有序集合,在很多语言里面都有支持,像 Java 中的 List ,可以简单理解 List 是一个顺序表,可以对它进行添加和删除元素的操作,但和 Java 不同,Java 的 List...
 为什么说,每个人都应该学会 Markdown 在 IT 圈和作家圈,Markdown 是一种非常风靡的语言,可能大家都已经或多或少的接触过,或者正在使用了,如果你现在没用在用,那么我强烈的推荐您学习和掌握该语言, 这篇文章我不是站在一个程序员的角度来介绍 Markdown 的,我觉得只要是文字工作者,都有必要去学习和使用 Markdown。 同时,我也不会介绍 Markdown 的语法。 我对 Markdown 的印象就是: * **高效** * **简约** * **优雅** * **专注** ## 其他文本生产工具的一些弊端 很多人都是使用 Word 或者...
 >这是「AI 学习之路」的第 2 篇,「Python 学习」的第 2 篇 我将分两篇讲解下 Python 的基础语法,这是第一篇。大家也可以在很多地方看到入门的学习资料,我就简单的根据自己理解和学习,用尽量简单和好理解的方式,再来小入门一下,文中可能会用到一些 Java 上的理解。 **总而言之,我不希望是一种阅读文档的方式,而是用一种思考和共鸣的方式去理解各个知识点。** ## 一些建议 今天在群里,有的小伙伴建议我使用一些类似 PyCharm 这样的智能编译器来入门 Python,实际上我何尝不想用编译器呢,我也是老早就下载了 PyCharm,但我还是决定在学习的过程中不使用任何智能编译器,使用命令行和纯文本编辑器来一个字符一个字符的写代码,我也建议大家这样做,先暂时放放手里的编译器。 为什么一再强调这样做呢,在上大学的时候,每次学一门新的语言,老师都会强调让我们用命令行来编译代码,这样做不仅能帮助我们更好的理解一门语言的编译过程,而且一行一行敲出来可以更好的培养我们对这门语言的「语感」,是不是真的和学英语感觉差不多,实际上确实是差不多的,写代码也是要一个「语感」。 我们在控制台或者终端中输入「python3」将进入 Python 的交互式环境,在交互式环境中,我们可以直接输入代码,回车后,每一行代码的结果都会被打印输出出来。你也可以通过执行「python test.py」来运行一个 .py 文件。但这两种输出方式有一定区别,举个例子。 在交互式环境下输入以下代码并回车 ```python...