项目计划和进展

resolvewang edited this page Oct 9, 2017 · 5 revisions
  • 微博内容抓取相关

    • 模拟登陆,账号请放置在login_info表中,如果账号登陆时需要验证码,请在云打码官网注册一个云打码用户账号,并进行适当充值
    • 微博常见用户和企业用户信息抓取:通过粉丝和关注进行增量式抓取,起始种子(微博用户uid)请插入seed_ids
    • 微博搜索功能,搜索词由自己指定
    • 指定用户的主页:主要是原创微博内容,你也可以修改文件home.py中的home_urlajax_home_url中的is_ori=1is_all=1来 抓取用户的所有微博。目前指定用户是基于已有的seed_ids表中的home_crawled=0的用户,你也可以自己指定想要抓取的用户。
    • 指定微博的评论:主要是抓取针对该微博的评论,即根评论。你可以通过修改comment.py中的get_comment_list() 来抓取指定微博的所有评论,包括根评论和子评论。目前抓取的评论是从weibo_data表中选取的comment_crawled=0的微博,你可以指定微博mid来定制化爬取评论。
    • 指定微博的转发情况:主要是热门微博的转发信息
  • 反爬虫相关

    • 测试单机单账号访问阈值,这个问题和下面一个问题可以参考 issue#17issue#18
    • 测试单机多账号访问效果
    • 验证不同模块,微博系统的容忍度是否相同
    • 验证登录状态的cookies和代理ip是否可以成功抓取:测试结果是可以使用登录后的cookie 从别的地方进行数据采集,根据这一点,可以考虑使用代理IP,但是代理IP的质量和稳定性可能会 有问题,可能需要找一个或者自己写一个高可用的代理池,这一点还有待考察)
    • 验证移动端登录Cookie和PC端是否可共享,如果可以共享则为PC端大规模抓取提供了可能,因为基于 移动端的异地模拟登陆难度比PC端要小。目前异地账号使用打码平台进行验证码识别,并未采用移动端的方式登录
    • 比较单IP和单账号哪个的限制更多,从而制定更加高效的数据采集方案:测试得知,经常是 账号被封了,然后同一个IP用别的账号还能登陆,所以账号的限制比IP更加严格
  • 其它

    • 优化代码,让程序运行更加快速和稳定:水平有限,已经优化过一次了。下一次可能 要等一段时间了
    • 修复某些时候抓取失败的问题(已添加重试机制)
    • 改成分布式爬虫(使用Celery做分布式任务调度和管理)
    • 完善文档,包括怎么快速创建虚拟环境,怎么安装相关依赖库,怎么使用该项目(请查看三个演示视频(链接: https://pan.baidu.com/s/1kVHUWGv 密码: ydhs)); 讲解celery的基本概念和用法(请查看wiki中关于celery构建分布式爬虫的系列文章); 讲解微博的反爬虫策略(具体请查看issue17issue18); 各个tasks模块的作用和使用方法(请查看wiki中关1task queue说明)。
    • 寻找能解决redis单点故障的方案,有兴趣可以查看我写的这篇文章
    • 完善代码注释,方便用户做二次开发
    • 支持Dockerfile部署项目
    • 重构项目,以更加Pythonic的方式构建项目。国庆期间重构了部分模块,主要是添加了单元测试和持续集成相关支持。
    • 经过调研发现,某些模块可以不用登录就能抓取,这就可以极大减轻账号压力。所以下一步打算将项目中的对应部分进行优化。相关文章点击这里查看。(目前功能已实现,位于master分支。由于没大规模地做过稳定性测试和数据正确性测试,所以暂时没发布release版本。喜欢尝鲜的朋友可以试用)
    • 实现一个高可用的IP代理池,让微博爬虫的部分模块接入。调研了很多个开源代理IP实现,发现基本都是一些简单代码的堆砌,可用性问题很大。这个功能的最终目标实现类似dungproxy的IP代理工具(dungproxy使用java编写),由于本人Java编码能力有限,所以需要重新造个轮子。
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.