阅读本文大概需要 3.6 分钟。
前段时间《一个出身寒门的状元之死》刷屏了,当我看完了这篇文章,很有感触,一开始我以为是事实,后来才发现完全是虚构,对于我来讲并不是非常在乎文章中的故事是否是真实的,我在乎文章给我的那种生活体验。
文中那个出身寒门的状元,不为利益而牺牲自己的原则,也就是不做恶:比如在做家教时,有钱人家的学生让他把寒假作业的答案发给他们,这样他就可以获得丰厚的报酬,然而他坚决不做,还为此挨了打。文中有很多这样的事情。
那个出身寒门的状元坚持不做恶,这也让他处处碰壁,最后,竟得病死了,不管怎么说,这样一身正气,充满正能量的人却死了,周围那些到处谄媚,逢场作戏的人却活的好好的,不得不说这样的结局让很多人感到惋惜。我想这也是此文章有很多阅读量的原因。作者的写作手法非常高超:要引发人们的羡慕,就捧到天上,要赚取眼泪,就踩到泥里。人造的落差感,到底还是缺了点生活。
但是现在想看这篇文章时,已经无法访问了。
当我看到这个时很震惊,心想这么好的阅读体验的文章就这么没了,在网上搜索了好久都搜索不到。心里一阵堵。
唉,如何防止喜欢的公众号文章被删除呢? 那就是当天就把该文章保存起来,有时间再回头慢慢玩味。现在每个人都很忙,而且关注的公众号也多,有没有程序来帮我做这件事呢?
还真有,我搜索了一下,发现这样一个好的开源项目:wechat-spider
界面预览
1) 要爬取的微信公众号列表
2) 要爬取的文章关键字列表
3) 已经爬取的微信文章
4) 查看文章,并标记是否可用
5) 控制爬取进程数
技术栈
python + django + redis + mysql
安装
1)python环境, 检查python的版本,是否为2.7.x,如果不是,安装2.7.6。
如果是centos 6.x,升级python2.6到python2.7,参考教程 http://ruiaylin.github.io/2014/12/12/python%20update/
如果是centos 7.x,默认就是python2.7,不用升级
如果是mac osx,可以使用virtualenv,安装python2.7
2)安装依赖包, clone代码
安装Mysql-python依赖
yum install python-devel mysql-devel gcc
安装lxml依赖
yum install libxslt-devel libxml2-devel
安装浏览器环境 selenium依赖.(如果是mac环境,仅需安装firefox, 但确保版本是 firefox 36.0,使用最新的版本会报错)
yum install xorg-x11-server-Xvfb
yum upgrade glib2 # 确保glib2版本大于2.42.2,否则firefox启动会报错
yum install firefox # centos下安装最新的firefox版本
clone代码,安装依赖python库
$ git clone https://github.com/bowenpay/wechat-spider.git$ cd wechat-spider$ pip install -r requirements.txt
3) 创建mysql数据库
创建数据库wechatspider,默认采用utf8编码。(如果系统支持,可以采用utf8mb4,以兼容emoji字符)
mysql> CREATE DATABASE `wechatspider` CHARACTER SET utf8;
4) 安装和运行Redis
$ wget http://download.redis.io/releases/redis-2.8.3.tar.gz$ tar xzvf redis-2.8.3.tar.gz$ cd redis-2.8.3$ make$ make install$ redis-server
5) 更新配置文件local_settings
在 wechatspider 目录下,添加 local_settings.py
文件,配置如下:
# -*- coding: utf-8 -*-
SECRET_KEY="xxxxxx"
CRAWLER_DEBUG = True# aliyun oss2, 可以将图片和视频存储到阿里云,也可以选择不存储,爬取速度会更快。 默认不存储。#OSS2_ENABLE = True#OSS2_CONFIG = {# "ACCESS_KEY_ID": "XXXXXXXXXXXXXX",# "ACCESS_KEY_SECRET": "YYYYYYYYYYYYYYYYYYYYYY",# "ENDPOINT": "",# "BUCKET_DOMAIN": "oss-cn-hangzhou.aliyuncs.com",# "BUCKET_NAME": "XXXXX",# "IMAGES_PATH": "images/",# "VIDEOS_PATH": "videos/",# "CDN_DOMAIN": "XXXXXX.oss-cn-hangzhou.aliyuncs.com"#}# mysql 数据库配置
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','HOST': '127.0.0.1','NAME': 'wechatspider','USER': 'root','PASSWORD': '','OPTIONS':{'charset': 'utf8mb4',
},
}
}# redis配置,用于消息队列和k-v存储
REDIS_OPTIONS = {'host': 'localhost','port': 6379,'password': '','db': 4
}
6) 初始化表
$ python manage.py migrate
7)启动网站
python manage.py runserver 0.0.0.0:8001
访问 http://localhost:8001/。
6) 创建超级管理员账号,访问后台,并配置要爬取的公众号和关键字
python manage.py createsuperuser
8)启动爬虫
$ python bin/scheduler.py$ python bin/downloader.py$ python bin/extractor.py$ python bin/processor.py
以上步骤执行成功,并能爬取文章后,可以考虑使用 uwsgi + nginx 在生产环境部署。
项目 github 地址: https://github.com/bowenpay/wechat-spider
(完)