呓语 | 杨英明的个人博客

专注于c++、Python,欢迎交流

By

[顶] 如何写一个简单的分布式知乎爬虫?

很早就有采集知乎用户数据的想法,要实现这个想法,需要写一个网络爬虫(Web Spider)。因为在学习 python,正好 python 写爬虫也是极好的选择,所以写了一个基于 python 的网络爬虫。

几个月前写了爬虫的初版,后来因为一些原因,暂时搁置了下来。最近重新拾起这个想法,首先优化了代码的结构,然后在学弟的提醒下,从多线程改成了多进程,一台机器上运行一个爬虫程序,会启动几百个子进程加速抓取。

但是一台机器的性能是有极限的,所以后来我使用 mongodb 和 redis 搭建了一个主从结构的分布式爬取系统,来进一步加快抓取的速度。

然后我就去好几个服务器厂商申请免费的试用,比如百度云、腾讯云、Ucloud…… 加上自己的笔记本,断断续续抓取了一个多周,才采集到300万知乎用户数据。中间还跑坏了运行网站的云主机,还好 自动备份 起作用了,数据没有丢失,但那又是另外一个故事了……

废话不多说,下面我介绍一下如何写一个简单的分布式知乎爬虫。

By

[顶] Python 学习拾遗

该博文主要适应于python2.7,并没有对py3进行测试。

主要记录学习python过程中容易出现的一些小问题、小错误,相信能给你启发。

By

readfree.me 自动签到脚本获取免费积分

这又是一个 python 脚本,这次的目标是 readfree.me ,一个比较正规的 kindle 电子书资源站。这个网站做了限制,电子书需要积分才能下载,积分有两种获取方式:1.充会员 2.每天领免费积分。本着能免费就不掏腰包的革命原则,我自然而然的把目光瞄到了每天的免费积分上……

脚本目的:每天自动登录 readfree.me 进行签到 ---> 领取积分

By

python 实现校园网自动登录

我所在的学校校园网登录是web式的,即随便打开一个网页就会自动跳转到登录页面,然后输入用户名密码,点登录,便可以上网了。

但这种登录方式有个缺点:登录状态不会一直保持下去。即过一段时间就会掉线,然后你需要重新登陆才行。这个时间大概是一天。

这就蛋疼了,想让实验室的电脑随时保持联网状态怎么办呢?(有时候我需要远程我的电脑)

这个时候可以用python脚本解决这个问题!

By

Pandas 默认时间格式转换为 Unix 时间戳

Pandas读取csv文件时,时间会自动显示为‘YYYY-MM-DD HH:MM:SS’的格式,那么如果想要将这个时间转换为 Unix时间戳 呢?

先科普一下,什么是 Unix时间戳 呢?

Unix时间戳 是一种时间表示方式,是一个整型值,代表从格林威治时间1970年01月01日00时00分00秒起至现在经过的总秒数。

举个栗子:

Unix时间戳 表示形式为 1492751843 这样的整型
把它转换为 北京时间为 2017/4/21 13:17:23

实际上,Pandas中时间用 pandas.datetime() 转换为 pandas.tslib.Timestamp(时间戳) 格式之后,已经变成了整型存储,即 Unix时间戳形式 。

如果我们需要这个时间戳的整型格式,可以用 time[0].value 这个属性把它提取出来。

By

基于Django、WeRoBot的微信公众平台开发(二)

上一节,我在一个Django项目中集成了 基于WeRoBot的微信公众号后台,成功与服务器完成了对接,并且可以对用户的任意消息做出响应(回复一个“hello”),简单来说,就是搭建起了一个开发框架。

这一节中,我将继续用 WeRoBot 在这个开发框架上扩展一些功能,让公众号的交互丰富起来,思来想去,我挑了三个相对简单的功能进行实现:简单的聊天功能,天气查询,讲笑话

下面是实现这三个功能的过程和心得记录,分享给大家。

By

基于Django、WeRoBot的微信公众平台开发(一)

* 该教程基于第三方微信公众号开发框架 WeRoBot
* 该教程在已有Django项目上开发,即在已有网站项目中嵌入一个微信公众平台服务
* 你需要有一个VPS/云服务器

今天突发奇想,打算申请一个微信公众账号玩玩,以便同步博客上的一些文章。

由于在学python,于是打算用Python来开发微信公众号的后台。

为了方便开发,我在github上寻找微信公众号开发的框架,最后锁定了 WeRoBot

下面我将用WeRoBot在一个Django网站项目中开发微信公众号的后台。

废话不多说了,我们开始吧!

By

修改博客系统的第三方库

博客系统的运行环境由Django、markdownx、markdown-deux、markdown2等第三方库组成。

在写博客系统的过程中,为了实现自己的意图,我修改了一些第三方库的源代码。

为了以后方便部署,在这里记录一下我修改的地方。

By

搭建网站自动备份机制(crontab+mysqldump+tar+oss)

个人网站在云服务器上部署好了之后,为了防止数据丢失,我们往往需要定期的备份网站的数据。

每次手动去备份太麻烦,我们可以使用 Linux+Python 搭建一个 网站自动备份机制 来自动化、定时的去完成备份工作。

简单来说这个机制可以 定时备份网站数据,并自动将备份文件上传到云上

By

【翻译】Django1.8 中文文档

原文链接:Django documentation

关于Django你需要知道的一些事情。

By

【IJCAI-17 口碑商家客流量预测】使用Pandas计算商家平均客流量

这段时间参加了天池的 IJCAI-17 口碑商家客流量预测 大数据竞赛,初次参加此类竞赛,也是第一次使用pandas,折腾了许久,记录下自己的心得。代码很粗糙,仅作个人记录用。参考价值不大,大神勿喷。

下面出现的代码已经提交检验通过,第一次提交混上了排行榜,400+左右的位置,第二次修改了一下混到了200+的位置,真是没有想到这么水的算法也能上排行榜……

By

Pandas读取csv表格数据 && 存入数据库

作为一只萌新报名参加了阿里的天池大数据比赛,参加的这场比赛的题目是 预测商家未来14天的客流量 。由于第一次做ML/DM方面的比赛,所以上手需要学习不少新知识,比如读取数据这方面。

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的,经常用于数据分析和科学计算领域。

不管参加天池大数据比赛或者是Kaggle,首先要做得都是从比赛提供的数据文件中将数据提取出来,即 提取数据

为了更好的提取数据我不可避免的用到了Pandas,在这里我把用pandas提取csv表格数据的心得记录下来。

By

Django网站搭建心得汇总

搭建该网站过程中的心得汇总。

By

博客园文章迁移脚本(xml.sax+mysqldb)

写博客系统的后期需要把之前的文章导入过来,我之前的文章都在博客园上,但是博客园只提供博文导入到有限的第三方博客系统中,这里面肯定不包括我自己写的博客系统,所以我需要自己写一个文章迁移程序。

好在博客园提供博文备份功能,导出的备份文件是 xml格式

所以文章迁移程序要完成两个步骤:

  1. 解析xml文件
  2. 执行sql导入文章

By

Django-markdownx 修改预览页默认CSS样式

在使用django-markdownx的过程中,存在不少问题,比如说这次要讨论的问题:预览页面显示样式和文章发布出去的显示样式不同。

导致这个问题的原因很简单:因为 后台使用的css和前台使用的css不同

在这里我只打算修改后台markdownx预览页的显示样式,让它显示效果和前台的显示效果相同。

By

Django 后台添加more标签识别(自动截取文章简介)

文章发布时,后台有 文章内容文章描述 两个栏目需要填写,文章描述 其实就是文章简介/摘录,用于显示在首页文章列表中。

一开始我在填写这两个栏目时候的做法是,先写文章,然后从文章内容中截取一部分放到文章描述中,另一种做法就是直接将文章标题当做文章描述。

这样很麻烦,于是我想做一个“识别more标签”的功能,即在后台编辑文章时,在合适的地方插入 --more--,点击发布的时候后台会自动将more标签之前的内容截取出来作为文章描述。

By

Django-markdownx 修改默认渲染引擎,支持GFM的```代码块识别

Django-markdownx 是一款django的插件,它用于markdown文档的编写,简单来说,它是一款网页端的markdown编辑器。

Markdownx用起来虽然不错,但是他在一些方面还是有些限制,比如说我想让他支持```代码块识别

By

Django-markdownx 支持gif动态图片上传

Django-markdownx 是一款轻量级的Markdown编辑器,可作为app在django中使用。

我将它安装在了admin后台,用于写文章。

下图是它的使用预览:

By

Django admin 自定义Choice_field

Django admin 自定义Choice_field

By

KindEditor 4.15无法修改默认显示字体大小

KindEditor 4.15无法修改默认显示字体大小

By

黑板客爬虫闯关 代码

黑板客爬虫闯关 代码