基于.net core 开源分布式爬虫 Ruiji.Net 教程(Linux部署)

RuiJi.Net是一个开源的分布式的网络爬虫框架,他有三种运行模式,分别为本地模式,伪分布模式,全分布模式。因为此款框架是基于.net core开发的,可以支持跨平台Linux系统运行。因为本人接触Linux也不多,今天就写一篇成功在Linux部署Ruiji.Net单机版的爬坑文章。我使用的Linux系统为CentOs7。

下载RuiJi.Net

官网地址:http://doc.ruijihg.com/
源码地址:https://github.com/zhupingqi/RuiJi.Net
https://gitee.com/zhupingqi/RuiJi.Net
下载地址:https://codeload.github.com/zhupingqi/RuiJi.Net/zip/v1.0-rc1

VS2017发布Ruiji.Net

首先保证本机有.net core2.1的SDK 官方下载地址
https://download.microsoft.com/download/4/0/9/40920432-3302-47a8-b13c-bbc4848ad114/dotnet-sdk-2.1.302-win-gs-x64.exe

使用VS2017打开RuiJi.Net.sln
nuget自动还原依赖包
生成RuiJi.Net.Cmd,全部重新生成成功。

右键单机RuiJi.Net.Cmd发布,直接发布


发布成功后可以看到目录结果如下

还可以直接下载release发布版,直接省略编译发布步骤。
下载地址:https://pan.baidu.com/s/1xZFIGT1FF_toXzs42qPLUw#list/path=%2FRuiJi.Net%2FRelease 密码ef8d

因为这次只是尝试部署单机版,所以将ruiji.json配置文件修改成只运行单机模式。

上传项目到Linux系统

通过自己喜欢的各种方式放入Linux系统中,我使用的Xmanager Enterprise 5软件支持SFTP协议。
我上传到Linux的/usr/ruiji.net文件夹下,上传完毕看到如下效果。

安装.net core2.1 linux环境

微软官方文档介绍的方法直接安装成功

  • 1
  • 2
  • 3

启动 RuiJi.Net

跳转到RuiJi.Net路径下

  • 1

执行

  • 1

本以为会启动成功,结果报错显示本机无IP4地址。
后来检索结果,可能跟我虚拟机配置有关。
修改/etc/hosts,添加本机地址指定hostname。
再次执行启动RuiJi.Net,成功搞定。

回到Windows系统 访问一下成功启动的地址看看效果
404无法访问,忘记开Linux防火墙端口了。

查询防火墙

  • 1

结果返回no
永久开启文档80端口和RuiJi.Net36000端口,重新加载再次查询返回yes

  • 1
  • 2
  • 3

打开浏览器重新访问192.168.15.129:36000,成功进入后台管理系统,为了避免乱码或显示错误,最好使用谷歌内核浏览器浏览

添加一个动态页面测试抓取的示例,发现如果把RunJs勾选上就会报一下错误

查阅中文文档 http://doc.ruijihg.com/cn/index.html
在目录安装》其他中发现有chromium使用的描述

按照文档说明下载chromium并解压到RuiJi.Net目录的chromium文件夹中

安装chrome-libs库

  • 1

并给与chromium文件夹最高权限

  • 1

再次测试,成功运行酒仙网界面JS抓取动态界面成功。

我还使用POST请求测试了其他一些网站的信息。大家如果感兴趣可以自己去测试玩,去官方文档可以查询到RuiJi表达式相关写法,个人有一定的爬虫基础还是很简单的,无非就是css selector、jsonPath、regex。

开启开源中国的博客抓取,点击GrabResult选项卡查看抓取结果,大成功

自此,Linux部署RuiJi.Net 教程到此结束。
在运行RuiJi.Net时发现非常不方便,不可以关闭远程链接linux服务器的shell,一旦关闭那么RuiJi.Net也会停止运行。
我找到解决办法是使用supervisord守护进程来调用RuiJi.Net,以后有时间我会写一篇supervisord守护进程调用RuiJi.Net的教程。

另外我们本次是搭建单机版的RuiJi.Net,通过修改ruiji.json可以伪分布和全分布搭建RuiJi.Net。具体办法可以参考中文文档:http://doc.ruijihg.com/cn/index.html

参与评论

游客评论不支持回复他人评论内容,如需回复他人评论内容请