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

很文博客hinven.com 2018年5月6日10:25:04技术教程评论1493597字阅读模式

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

常见的爬虫软件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. 局限性和问题还是挺多,希望项目未来完善。而且数据采集本来就是专业活,普通用户还是使用专门的软件和插件来得快。

weinxin
扫一扫更精彩
大家的支持是我更新的动力!!!
Ctrl+C+V,快速安装ss和brook 技术教程

Ctrl+C+V,快速安装ss和brook

大部分人买VPS也不过就是当作学习服务器用,大部分就是自用,盈利开机场的,可以不看此文了。 如果是自用,几个人用,稳定应该才是第一位的,至于什么BBR,加速之类的,我自己的压根就没装,实在是没有必要。...
介绍几款 Docker 镜像 技术教程

介绍几款 Docker 镜像

Docker(https://www.docker.com/) 是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在 Linux 操作系统上,提供一个额外的软件抽象层,以及...
广告也精彩
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定