Skip to content

zhanghe06/news_spider

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9e29525 · May 26, 2019

History

37 Commits
May 26, 2019
May 26, 2019
May 26, 2019
Feb 24, 2019
May 26, 2019
May 26, 2019
Jul 11, 2018
Feb 10, 2018
May 23, 2018
Feb 24, 2019
Feb 24, 2019
Jul 6, 2018
Jul 6, 2018
Jul 6, 2018
May 26, 2019
Sep 4, 2018
Feb 10, 2018
May 26, 2019
Jun 6, 2018
May 26, 2019
May 26, 2019
Feb 10, 2018

Repository files navigation

新闻抓取

Build Status Coverage Status

项目演示

服务依赖:

  • MariaDB
  • Redis
  • NodeJS

本项目依赖第三方验证码识别服务

更新配置 config/default.py 用户名和密码

RK_CONFIG = {
    'username': '******',
    'password': '******',
    'soft_id': '93676',
    'soft_key': '5d0e00b196c244cb9d8413809c62f9d5',
}

# 斐斐打码
FF_CONFIG = {
    'pd_id': '******',
    'pd_key': '******',
    'app_id': '312451',
    'app_key': '5YuN+6isLserKBZti4hoaI6UR2N5UT2j',
}
# python2
virtualenv news_spider.env              # 创建虚拟环境
# python3
virtualenv news_spider.env -p python3   # 创建虚拟环境

source env_default.sh               # 激活虚拟环境
pip install -r requirements-py2.txt # 安装环境依赖
# 开发环境 模拟单次抓取
python tasks/job_put_tasks.py wx    # 初次创建任务
python tasks/jobs_sogou.py          # 初次应对反爬
scrapy crawl weixin                 # 开启微信爬虫
# 生产环境 开启持续抓取
supervisord                         # 开启守护进程
supervisorctl start all             # 开启工作进程
  • env_develop.sh # 开发环境
  • env_product.sh # 生产环境

项目创建过程记录

项目依赖明细

pip install requests
pip install scrapy
pip install sqlalchemy
pip install mysqlclient
pip install sqlacodegen==1.1.6  # 注意: 最新版 sqlacodegen==2.0 有bug
pip install redis
pip install PyExecJS
pip install Pillow
pip install psutil
pip install schedule
pip install future          # 兼容py2、py3
pip install supervisor      # 当前主版本3只支持py2,将来主版本4(未发布)会支持py3

因当前supervisor不支持python3,故在requirements.txt中将其去掉

由于任务调度apscheduler不支持Py3(其中的依赖futures不支持),这里采用schedule

scrapy的依赖cryptography2.2.2版本中有安全性问题, 强烈建议更新至2.3及以上版本, 可以通过更新scrapy的方式升级

scrapy的依赖parsel使用了functoolslru_cache方法( python2 是functools32lru_cache方法;functools32functools的反向移植)

Mac 系统环境依赖(mariadb)

brew unlink mariadb
brew install mariadb-connector-c
ln -s /usr/local/opt/mariadb-connector-c/bin/mariadb_config /usr/local/bin/mysql_config
# pip install MySQL-python
pip install mysqlclient  # 基于 MySQL-python 兼容py2、py3
rm /usr/local/bin/mysql_config
brew unlink mariadb-connector-c
brew link mariadb

CentOS 系统环境依赖

yum install gcc
yum install mysql-devel
yum install python-devel
yum install epel-release
yum install redis
yum install nodejs

CentOS 安装 python3 环境(CentOS 默认是不带 python3 的)

yum install python34
yum install python34-devel

CentOS 安装 pip & virtualenv & git & vim

yum install python-pip
pip install --upgrade pip
pip install virtualenv
yum install git
yum install vim

创建项目

scrapy startproject news .
scrapy genspider weixin mp.weixin.qq.com

启动蜘蛛

scrapy crawl weixin

如需测试微博, 修改以下方法, 更改正确用户名和密码

tools/weibo.py

def get_login_data():
    return {
        'username': '******',
        'password': '******'
    }

蜘蛛调试(以微博为例)

  1. 清除中间件去重缓存, 重置调试任务
127.0.0.1:6379> DEL "dup:weibo:0"
(integer) 1
127.0.0.1:6379> DEL "scrapy:tasks_set:weibo"
(integer) 1
127.0.0.1:6379> SADD "scrapy:tasks_set:weibo" 130
(integer) 1
127.0.0.1:6379>
  1. 清除调试蜘蛛存储数据
DELETE FROM fetch_result WHERE platform_id=2;
  1. 启动调试蜘蛛
scrapy crawl weibo

验证码识别

http://www.ruokuai.com/

http://wiki.ruokuai.com/

价格类型: http://www.ruokuai.com/home/pricetype

热心网友反映若快已经关闭, 接下来会支持斐斐打码, 敬请期待

斐斐打码开发文档 http://docs.fateadm.com

索引说明

联合索引, 注意顺序, 同时注意查询条件字段类型需要与索引字段类型一致

实测, 数据量8万记录以上, 如果没有命中索引, 查询会很痛苦

项目说明

亮点:

  1. 支持分布式, 每个蜘蛛抓取进程对应一个独立的抓取任务
  2. 采用订阅发布模型的观察者模式, 处理并发场景的验证码识别任务, 避免无效的识别

备注: mysqltext最大长度为65,535(2的16次方–1)

类型 表达式 最大字节长度(bytes) 大致容量
TinyText 2的8次方–1 255 255B
Text 2的16次方–1 65,535 64KB
MediumText 2的24次方–1 16,777,215 16MB
LongText 2的32次方–1 4,294,967,295 4GB

由于微信公众号文章标签过多, 长度超过Text的最大值, 故建议采用MediumText

特别说明

头条请求签名

  • M端需要2个参数: as、cp
  • PC端需要3个参数: as、cp、_signature

M端2个参数获取方法已公开, 参考蜘蛛 toutiao_m

PC端3个参数获取方法已破解, 由于公开之后会引起头条反爬机制更新, 故没有公开, 如有需要, 敬请私聊, 仅供学习, 谢绝商用

因M端已满足数据获取要求, 不再开源PC端签名破解

TODO

微博反爬处理

About

新闻抓取(微信、微博、头条...)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages