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

  • A+
所属分类:技术教程

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

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

0.为什么采集

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

1.界面预览

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

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

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

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

3) 已经爬取的微信文章

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

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

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

5) 控制爬取进程数

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

2.安装

1. PYTHON环境

检查python的版本,是否为2.7.x,如果不是,安装2.7.6。

如果是centos 6.x,升级python2.6到python2.7,参考教程

如果是centos 7.x,默认就是python2.7,不用升级

如果是mac osx,可以使用virtualenv,安装python2.7

2. 安装依赖包, CLONE代码

安装Mysql-python依赖

  1. #yum是Linux的包管理工具,Mac下有homebrew,Python有pip
  2. #一般Python会附带安装pip,如果没有安装的话可以安装一下
  3. $ sudo easy_install pip
  4. yum install python-devel mysql-devel gcc
  5. pip里没有python-devel mysql-devel这2个插件,所以装不上,后面运行也不影响,可以跳过。
  6. gcc装xcode就有了,如果不安装Xcode,可以用其他方式安装如homebrew

 

安装lxml依赖

  1. yum install libxslt-devel libxml2-devel
  2. pip里一样没有,可以通过homebrew来安装
  3. 我开始也是跳过了,但后面运行程序时报错,在stackoverflow找到这个答案,解决了,运行下面四个命令就行,需要先按照homebrew。
  4. brew install libxml2
  5. brew install libxslt
  6. brew link libxml2 --force
  7. brew link libxslt --force
  8. tips:安装这些的时候又报Xcode错误
  9. Error: Xcode alone is not sufficient on Sierra.
  10. Install the Command Line Tools:
  11.   xcode-select --install
  12. 就用提示的这句安装xcode-select。自动搜索安装后,就能安装上面4个了

 

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

  1. #mac 直接跳过这3句,下载firefox安装
  2. yum install xorg-x11-server-Xvfb
  3. yum upgrade glib2 # 确保glib2版本大于2.42.2,否则firefox启动会报错
  4. yum install firefox # centos下安装最新的firefox版本
  5. Mac firefox 36.0 下载地址:https://ftp.mozilla.org/pub/firefox/releases/36.0.1/mac/
  6. 安装后偏好设置注意不要让其自动更新

 

clone代码,安装依赖python库

  1. $ git clone https://github.com/bowenpay/wechat-spider.git
  2. $ cd wechat-spider
  3. $ pip install -r requirements.txt

 

3. 创建MYSQL数据库

创建数据库wechatspider,默认采用utf8编码。(如果系统支持,可以采用utf8mb4,以兼容emoji字符。

  1. mysql> CREATE DATABASE `wechatspider` CHARACTER SET utf8;

 

4. 安装和运行REDIS

  1. $ wget http://download.redis.io/releases/redis-2.8.3.tar.gz
  2. $ tar xzvf redis-2.8.3.tar.gz
  3. $ cd redis-2.8.3
  4. $ make
  5. $ make install
  6. $ redis-server

 

5. 更新配置文件LOCAL_SETTINGS

在 wechatspider 目录下,添加 local_settings.py 文件,配置如下,注意修改成自己的配置,如数据库密码:

  1. # -*- coding: utf-8 -*-
  2. SECRET_KEY="xxxxxx"
  3. CRAWLER_DEBUG = True
  4. # aliyun oss2, 可以将图片和视频存储到阿里云,也可以选择不存储,爬取速度会更快。 默认不存储。
  5. #OSS2_ENABLE = True
  6. #OSS2_CONFIG = {
  7. #    "ACCESS_KEY_ID""XXXXXXXXXXXXXX",
  8. #    "ACCESS_KEY_SECRET""YYYYYYYYYYYYYYYYYYYYYY",
  9. #    "ENDPOINT""",
  10. #    "BUCKET_DOMAIN""oss-cn-hangzhou.aliyuncs.com",
  11. #    "BUCKET_NAME""XXXXX",
  12. #    "IMAGES_PATH""images/",
  13. #    "VIDEOS_PATH""videos/",
  14. #    "CDN_DOMAIN""XXXXXX.oss-cn-hangzhou.aliyuncs.com"
  15. #}
  16. # mysql 数据库配置
  17. DATABASES = {
  18.     'default': {
  19.         'ENGINE': 'django.db.backends.mysql',
  20.         'HOST': '127.0.0.1',
  21.         'NAME': 'wechatspider',
  22.         'USER': 'root',
  23.         'PASSWORD': '',
  24.         'OPTIONS':{
  25.             'charset': 'utf8mb4',
  26.         },
  27.     }
  28. }
  29. # redis配置,用于消息队列和k-v存储
  30. REDIS_OPTIONS = {
  31.     'host': 'localhost',
  32.     'port': 6379,
  33.     'password': '',
  34.     'db': 4
  35. }

 

6. 初始化数据库表

  1. $ python manage.py migrate

 

7. 启动网站

  1. python manage.py runserver 0.0.0.0:8001

访问 http://localhost:8001/。

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

  1. python manage.py createsuperuser

 

8. 启动爬虫

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

  1. $ python bin/scheduler.py
  2. $ python bin/downloader.py
  3. $ python bin/extractor.py
  4. $ 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. 局限性和问题还是挺多,希望项目未来完善。而且数据采集本来就是专业活,普通用户还是使用专门的软件和插件来得快。
图片引用自网络