-
Notifications
You must be signed in to change notification settings - Fork 1.2k
项目计划和进展
resolvewang edited this page Oct 9, 2017
·
5 revisions
-
微博内容抓取相关
- 模拟登陆,账号请放置在login_info表中,如果账号登陆时需要验证码,请在云打码官网注册一个云打码用户账号,并进行适当充值
- 微博常见用户和企业用户信息抓取:通过粉丝和关注进行增量式抓取,起始种子(微博用户
uid
)请插入seed_ids表 - 微博搜索功能,搜索词由自己指定
- 指定用户的主页:主要是原创微博内容,你也可以修改文件home.py中的
home_url
和ajax_home_url
中的is_ori=1
为is_all=1
来 抓取用户的所有微博。目前指定用户是基于已有的seed_ids
表中的home_crawled=0
的用户,你也可以自己指定想要抓取的用户。 - 指定微博的评论:主要是抓取针对该微博的评论,即根评论。你可以通过修改comment.py中的
get_comment_list()
来抓取指定微博的所有评论,包括根评论和子评论。目前抓取的评论是从weibo_data
表中选取的comment_crawled=0
的微博,你可以指定微博mid来定制化爬取评论。 - 指定微博的转发情况:主要是热门微博的转发信息
-
反爬虫相关
- 测试单机单账号访问阈值,这个问题和下面一个问题可以参考 issue#17和issue#18
- 测试单机多账号访问效果
- 验证不同模块,微博系统的容忍度是否相同
- 验证登录状态的cookies和代理ip是否可以成功抓取:测试结果是可以使用登录后的cookie 从别的地方进行数据采集,根据这一点,可以考虑使用代理IP,但是代理IP的质量和稳定性可能会 有问题,可能需要找一个或者自己写一个高可用的代理池,这一点还有待考察)
- 验证移动端登录Cookie和PC端是否可共享,如果可以共享则为PC端大规模抓取提供了可能,因为基于 移动端的异地模拟登陆难度比PC端要小。目前异地账号使用打码平台进行验证码识别,并未采用移动端的方式登录
- 比较单IP和单账号哪个的限制更多,从而制定更加高效的数据采集方案:测试得知,经常是 账号被封了,然后同一个IP用别的账号还能登陆,所以账号的限制比IP更加严格
-
其它
- 优化代码,让程序运行更加快速和稳定:水平有限,已经优化过一次了。下一次可能 要等一段时间了
- 修复某些时候抓取失败的问题(已添加重试机制)
- 改成分布式爬虫(使用Celery做分布式任务调度和管理)
- 完善文档,包括怎么快速创建虚拟环境,怎么安装相关依赖库,怎么使用该项目(请查看三个演示视频(链接: https://pan.baidu.com/s/1kVHUWGv 密码: ydhs));
讲解celery的基本概念和用法(请查看wiki中关于celery构建分布式爬虫的系列文章);
讲解微博的反爬虫策略(具体请查看issue17、issue18);
各个
tasks
模块的作用和使用方法(请查看wiki中关1task queue
的说明)。 - 寻找能解决redis单点故障的方案,有兴趣可以查看我写的这篇文章
- 完善代码注释,方便用户做二次开发
- 支持Dockerfile部署项目
- 重构项目,以更加Pythonic的方式构建项目。国庆期间重构了部分模块,主要是添加了单元测试和持续集成相关支持。
- 经过调研发现,某些模块可以不用登录就能抓取,这就可以极大减轻账号压力。所以下一步打算将项目中的对应部分进行优化。相关文章点击这里查看。(目前功能已实现,位于master分支。由于没大规模地做过稳定性测试和数据正确性测试,所以暂时没发布release版本。喜欢尝鲜的朋友可以试用)
- 实现一个高可用的IP代理池,让微博爬虫的部分模块接入。调研了很多个开源代理IP实现,发现基本都是一些简单代码的堆砌,可用性问题很大。这个功能的最终目标实现类似dungproxy的IP代理工具(dungproxy使用java编写),由于本人Java编码能力有限,所以需要重新造个轮子。