wechat-spider 微信公众号数据采集工具mac本地体验(python + firefox)

(Last Updated On: 2017-11-23)

数据采集又叫网络爬虫/蜘蛛,是一个自动提取网页的程序。搜索引擎之所以能保存那么多网页,就是不断地收录各种网页,并定时去采集最新信息。

常见的爬虫软件windows版本有八爪鱼、Octoparse、火车头等,高级功能需要收费,甚至连WordPress这类插件都有。还有各种语言的采集工具。这里介绍一个介绍一个专门采集微信公众号的工具,基于 Python 2.7 + firefox 36.0 ,模拟正常人访问搜狗搜索,来采集微信公众号数据。github

0.为什么采集

原因多多,可能是想找点好内容推荐或者转发,也有可能是收藏文章内容,数据采样、分析、整理。对于内容站点来说,更多的是获取最新,最热的关键字,没东西写的时候,转载一波。

1.界面预览

1) 要爬取的微信公众号列表

2) 要爬取的文章关键字列表

3) 已经爬取的微信文章

4) 查看文章,并标记是否可用

5) 控制爬取进程数

2.安装

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是Linux的包管理工具,Mac下有homebrew,Python有pip
#一般Python会附带安装pip,如果没有安装的话可以安装一下
$ sudo easy_install pip

yum install python-devel mysql-devel gcc

pip里没有python-devel mysql-devel这2个插件,所以装不上,后面运行也不影响,可以跳过。
gcc装xcode就有了,如果不安装Xcode,可以用其他方式安装如homebrew

 

安装lxml依赖

yum install libxslt-devel libxml2-devel

pip里一样没有,可以通过homebrew来安装
我开始也是跳过了,但后面运行程序时报错,在stackoverflow找到这个答案,解决了,运行下面四个命令就行,需要先按照homebrew。

brew install libxml2
brew install libxslt
brew link libxml2 --force
brew link libxslt --force

tips:安装这些的时候又报Xcode错误
Error: Xcode alone is not sufficient on Sierra.
Install the Command Line Tools:
  xcode-select --install
就用提示的这句安装xcode-select。自动搜索安装后,就能安装上面4个了

 

安装浏览器环境 selenium依赖.(如果是mac环境,仅需安装firefox, 但确保版本是 firefox 36.0,使用最新的版本会报错)

#mac 直接跳过这3句,下载firefox安装
yum install xorg-x11-server-Xvfb
yum upgrade glib2 # 确保glib2版本大于2.42.2,否则firefox启动会报错 
yum install firefox # centos下安装最新的firefox版本

Mac firefox 36.0 下载地址:https://ftp.mozilla.org/pub/firefox/releases/36.0.1/mac/
安装后偏好设置注意不要让其自动更新

 

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/。

创建超级管理员账号,访问后台,并配置要爬取的公众号和关键字

python manage.py createsuperuser

 

8. 启动爬虫

mac需要4个terminal同时跑这些服务

$ python bin/scheduler.py
$ python bin/downloader.py
$ python bin/extractor.py
$ python bin/processor.py

3.其他

  • 0. 中间出现权限问题permission failed,尝试加sudo提权root
  • 1. mac默认安装了一个Python,并且安全保护机制导致安装依赖的时候权限不够而出错(即使加了sudo),可以安装使用virtualenv,对项目隔离出一个独立的Python
  • 2.默认抓取当天能搜索的10条,但是有些公众号群发的不止10条,可以将wechat/downloaders.py里面的 [:10] 去掉。
  • 3.单机版容易被检测爬虫,要求输入验证码,甚至限制ip,提示操作过于频繁,请稍后再试。
解决方案
a.使用代理ip集,不是一两个ip。
b.将采集间隔和采集时间设置长一点,慢一点,模拟真实操作。
  • 4.以上步骤执行成功,并能爬取文章后。可以参考以下部分配置生产环境。部署nginx前期先用nginx将域名www.mydomain.com转发到8001端口。

    部署supervisor脚本

    参考文件 supervisord.conf

    部署crontab脚本

    参考文件 crontab

     

  • 5.进程管理,查看线程
    需要自己安装和使用supervisor,并且自己修改/wechatspider/templates/nav.html,修改相应的a标签。
  • 6. 后面的确是配置到头晕了,使用Intellij Idea 这个开发工具直接导入,配置独立Python env,安装依赖,运行,简单快捷。只是要注意一下:manager.py不能直接运行,需要配置script parameters:runserver 0.0.0.0:8001,爬虫的4个线程就可以直接运行。
  • 7. 局限性和问题还是挺多,希望项目未来完善。而且数据采集本来就是专业活,普通用户还是使用专门的软件和插件来得快。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Solve : *
17 − 15 =


此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据