Skip to content

项目使用常见问题

resolvewang edited this page Oct 15, 2017 · 8 revisions

1.问:项目部署好复杂啊,我也没有多台机器,我可以单机运行吗?

答:可以单节点运行。celery是去中心化的,如果由于硬件所限,你只有一台机器,也是可以直接按照本文档和项目中 的配置文档说明直接跑通该项目。关于项目使用的 问题都可以在issue中提出来。

2.关于redis的问题:为什么我在给redis设置密码后,并且把redis设置成了守护进程,但是没起作用?

答:如果在linux上面搭redis的话,当我们修改了redis.conf文件后,我们在启动redis的时候也需要指定redis.conf 文件,通过redis-server redis.conf来启动,注意redis-serverredis.conf的路径,这里为了方便,并未细化.

3.这个项目的模拟登陆和抓取的时候是怎么处理验证码的啊?

答:这个项目在模拟登陆阶段会判断账号是否需要验证码,对于需要验证码的账号,通过打码平台识别验证码进行 操作,我选择的是云打码;对于微博账号抓取的时候被封出现的验证码,目前的处理是从数据库和 redis中删除该账号对应的信息,因为要复现登录后被封需要一些时间来测试,并且某些情况下会验证手机,而某些情况只是识别验证码,这个 还需要进一步求证。

另外,我们应该尽量规避验证码,比如模拟登陆的时候尽量在账号常用地登录,还有一个点就是测试微博的容忍边界,小于它的阈值做采集 就不容易被封(不过速度很慢),毕竟按规矩来被封的风险要小得多。如果有图形图像识别的牛人解决了验证码的问题,欢迎提PR,帮助更多人。

4.这个项目能在windows上执行吗?

答:window上可以执行worker节点,但是不能执行beat节点(即定时任务)。如果要混用windows和linux,那么一定要将celery版本 降级为3.1.25,且将beat节点部署到linux服务器上。

5.这个项目一天能抓多少数据?

答:如果使用极速模式,3台机器每天可抓上百万的用户信息,可抓上千万的微博信息(如果用搜索来抓相关微博,达不到这个量,因为搜索接口 限制非常很严格),它的代价就是账号必然会被封,推荐在网上购买小号进行抓取。如果采用普通模式,那么三台机器每天可抓大概几万条用户 信息,账号较为安全。另外,还有一点是,微博搜索的限制比较严格,速度可能会比抓用户信息和抓用户主页微博慢,这点可能在后面会针对不同 需求的用户进行相应处理。

6.这个项目搜索抓到的数据怎么和手动搜索的数据量不一致?

答:不一致主要是因为搜索是用的高级搜索,默认只搜索原创微博,而用户手动去搜索是搜索的所有微博,包括转发的,所以数据量上会有出入, 如果要抓取所有微博,那么修改search模块urlhome模块中的home_url的值即可。

7.可以为这个项目做个web监控和管理页面吗?

答:其实这个需求不是必须的,并且flower已经提供了类似的功能了。使用flower,我们可以监控各个节点的健康状况,且可以看到执行的任务情况

8.为什么我通过执行celery -A tasks.workers worker -l info -c 1,并没有执行抓取?

上述命令如果执行成功,只是产生了一个worker,我们需要通过执行诸如python login_first.py这种语句,发任务给worker,它才会执行。除了这种方式,还可以通过定时功能来执行任务,定时功能第一次会延迟执行。

9.我通过celery -A tasks.workers worker -l info -c 1语句产生了worker,但是无法执行登录任务和抓取任务?

某些机器上,可能会出现bug,需要使用celery -A tasks.workers -Q login_queue,user_crawler worker -l info -c 1指定具体的task queue,所有task queue可以查看[这里](https://github.com/ResolveWang/WeiboSpider/wiki/WeibSpider%E4%B8%AD%E6%89%80%E6%9C%89%E4%BB%BB%E5%8A%A1%E5%8F%8A%E5%85%B6%E4%BD%9C%E7%94%A8%E8%AF%B4%E6%98%8E

10.执行celery -A tasks.workers worker -l info -c 1的时候,出现错误celery: command not found?

这个问题的原因是,shell并没找到celery这个命令,目前所知的有两种可能:(1)celery这个命令未加入环境变量;(2)当前用户权限不够,可以通过su切换到root用户去查看是否上述命令能执行成功,如果能,那么就需要使用chown或者chmodcelery这个可执行文件的权限改为普通用户可以使用,可以通过which celery查看celery可执行文件所在目录。

注意:建议使用pip3 install -r requirements.txt而非pip install -r requirements.txt,原因是如果你的系统中存在python2,那么会导致所有依赖都装在python2上,而该项目只能在python3上工作。此外,更为推荐的一种方式是使用source env.sh通过虚拟环境来安装和管理所有依赖。