网站破解权限 渗透劫持 黑客数据
5.01K subscribers
571 photos
1 video
50 links
Download Telegram
Docker 是部署 Crawlab 最方便和简洁的方式。其他部署方式包括直接部署,不过对于想快速搭建平台的开发者来说不推荐。Crawlab 已在Dockerhub上注册了相关的镜像,开发者仅需要执行docker pull tikazyq/crawlab命令就可以将 Crawlab 的镜像下载下来。
Crawlab 的整体架构图,由五大部分组成:

主节点(Master Node):负责任务派发、API、部署爬虫等;
工作节点(Worker Node):负责执行爬虫任务;
MongoDB 数据库:存储节点、爬虫、任务等日常运行数据;
Redis 数据库:储存任务消息队列、节点心跳等信息。
前端客户端:Vue 应用,负责前端交互和向后端请求数据。
我们将用 Docker Compose 启动 Crawlab 以及其依赖的数据库 MongoDB 和 Redis。首先我们需要修改一下 Docker Compose 的 yaml 配置文件docker-compose.yml。这个配置文件定义了需要启动的容器服务(Container Services)以及网络配置(Network Configuration)。这里我们用 Crawlab 自带的
Docker Compose 是简单的运行 Docker 集群的工具,非常轻量级,我们将用到 Docker Compose 来一键部署 Crawlab。
运行上述命令后,Docker Compose 会去拉取 MongoDB 和 Redis 的镜像,这可能会花几分钟时间。拉取完毕后,四个服务会依次启动,您将会在命令行中看到如下内容。
配置docker-compose.yml。尤其需要注意CRAWLAB_API_ADDRESS这个环境变量,很多初学使用者都是因为该变量配置不正确而导致无法登陆。大多数情况,您不用做任何配置更改。请参考Q&A来处理常见问题,以及详细的环境变量配置文档来帮助根据自身环境配置 Crawlab。
爬虫框架,其灵活的框架设计、高并发、易用性以及可扩展性让很多开发者和企业大量采用。市面上的爬虫管理平台几乎都支持 Scrapy 爬虫,Crawlab 也不例外,但 Crawlab 可以运行 puppeteer、selenium 等其他爬虫。下面将介绍一下在 Crawlab 中如何运行 scrapy 爬虫。
.初始登陆用户名密码是 admin/admin,您可以使用这个用户名密码来登陆。如果您的环境变量CRAWLAB_API_ADDRESS设置得不正确,您可能会看到点击登陆后登陆按钮会一直转圈而没有任何提示。这时请重新在docker-compose.yml中设置正确的CRAWLAB_API_ADDRESS(将localhost替换为<your_ip>),重新启动docker-compose up。然后在浏览器中输入http://<your_ip>:8080。
概览”标签中的“执行命令”一栏输入爬虫的 shell 执行命令。Crawlab 的 Docker 镜像里是内置了 scrapy 的,因此可以直接运行 scrapy 爬虫。命令就是scrapy crawl <some_spider>。点击“保存”按钮保存爬虫配置。
将爬虫文件打包成 zip(注意,要保证在根目录下直接打包);
在侧边栏点击“爬虫”导航至爬虫列表,点击“添加爬虫”按钮,选择“自定义爬虫”;
点击“上传”按钮,选择刚刚打包好的 zip 文件
上传成功后,爬虫列表中会出现新添加的自定义爬虫,这样就算上传成功了。
用 Gitlab 或其他平台搭建好代码仓库;
在 Jenkins 中创建一个项目,在项目中将代码源指向之前创建的仓库;
在 Jenkins 项目中编写工作流,将发布地址指向 Crawlab 的CRAWLAB_SPIDER_PATH,如果是 Docker 注意将该地址挂载到宿主机文件系统;
Jenkins 项目的工作可以直接编写,也可以用 Jenkinsfile,具体可以查相关资料;
这样,每一次代码更新提交到代码仓库后,Jenkins 就会将更新后的代码发布到 Crawlab 里,Crawlab 主节点会将爬虫代码同步到工作节点,以待抓取。
我们需要将更新后的代码发布到线上服务器。这时您需要用自己写部署脚本,或者更方便的,用 Jenkins 作为持续集成(Continuous Integration)管理平台。Jenkins 是一个持续集成平台,可以通过获取版本库来更新部署代码,是非常实用的工具,在很多企业中都有用到。下图是如何将 Crawlab 爬虫应用到持续集成工作流程中的例子。
顺便说一句这样是不是还可以刷一波GitHub commit。

代码po在了最后面。
永远是一个程序员应该做到的,但我们不能做到每天去查看,于是就诞生了这个repo(更正为原作者写了这个repo),我们将爬虫挂在Linux服务器上,定期爬取并且推送到自己的repo上,只要有时间,就可以看到之前的所有热门项目。
python相对于java等语言,最大的优势就在于其具有很大规模的封装良好的类库,可以让我们使用短短的几行代码,实现很多功能。这里列举几个常用的库和框架:

virtualenv: 创建独立 Python 环境的工具。
Beautiful Soup: 提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能 简单的说就是解析网页。
需要格外关注这几种类型之间的转换,我们知道python是一种弱数据类型语言,但不代表着它的数据类型可以混用,反而,正因为弱化了声明,才让有些操作更加容易出错,这时候我们需要做的,就是仔细阅读文档,熟悉不同的用法。
确实能拿到数据,一共有40多万条数据,每页10条,41336页。当你正喜出望外的时候,却发现只能获取最近50页的数据。把 page 参数改成 51
通过接口的方法返回的,但是老接口还能用 https://m.weibo.cn/api/comments/show?id={id}&page={page} , 这里的id只是某条微博的id, page 是分页参数。

于是尝试用这个接口去获取数据
数据获取的原理搞懂了, 就可以通过代码来实现,几十万条数据就能唰唰的爬下来了。

为了能够更好的做分析处理,我决定叫数据保存到MongoDB,它的好处就不介绍了,反正就是省事。
还有一个新接口,https://m.weibo.cn/comments/hotflow?mid=4477013081328252&max_id=330569188932643&max_id_type=0


这个接口也能拿到评论,mid 是某条微博的参数, max_id 是分页参数,这个参数可以从一个请求返回的数据中拿到