/salyut

This is an engine of a spider markup-language which called trico. (spider framework)

Primary LanguageJava

中文 | EN

Salyut

基于标记语言的开源爬虫框架。查看Salyut语法。

GitHub license MVN version Build Status

Salyuttrico script的的解析执行引擎,通过简单的调用Salyut中方法,即可以运行trico script并得到相应的结果。Salyut是一个开源项目,您可以自行修改expr目录下的类定制自己语法表达式,也可以通过修改或增加token目录下的类来扩充Salyut的能力。

Salyut基于的技术

  • 通过Yaml来对词法进行解析,如果您对Yaml有一定的了解,可以更好的帮助您提升trico script的一些语言特性。

  • 主要通过Selenium来获取浏览器的操控和解析能力,如果您对Selenium有一定的了解可以更好的帮助您提升trico script的一些能力。

脚本示例

- segment: #This is a trico script sample. A web calculator.
    name: '"calc"'
    args: {0: '/input'}
    body:
    - load: '"http://www.baidu.com"' #load page of Baidu
    - wait: {ele: '#su', type: '"presence"'} #wait element appear
    - fill: {ele: '#kw', value: '$/input'}
    - click: {ele: '#su'} #click search button
    - wait: {ele: '.op_new_val_screen_result', type: '"presence"'} #fetch the result
    - select: {ele: '.op_new_val_screen_result', path: '/result'}
    - put: { path: '/resultInt', value: '$/result', lambda: 'x -> return parseInt(x)'}
    - return: '$/resultInt'
- callin: {seg: '"calc"', 0: '"1+1"'} #call the segment named 'calc' and pass the argument '1+1'
- return: '$1'

如何使用

  • jar包调用

    1.在工程目录使用mvn clean package 打包

    2.cd target

    3.java -Dscript.path=../sample/webCalc.tr -Ddriver.path=../env/geckodriver-macOS -classpath salyut-jar-with-dependencies.jar com.trico.salyut.Salyut

    4.参数说明

    • script.path - 要执行脚本的路径 样例在sample中可以找到。
    • driver.path - driver路径 在env中可以找到。
    • segment.path - 预加载segment文件的路径。
    • headless - 是否无框启动浏览器。
    • browser.count - 可启动的浏览个数。
    • newTab.path - Salyut引擎创建新tab所需 在env中可以找到,需要全路径。
  • 代码调用

Salyut.setEnv(EnvKey.DRIVER_PATH,{your driver path});
Salyut.setEnv(EnvKey.NEW_TAB_PATH,{your newTab file path});

Salyut.launch();
Salyut.setOutputListener(
        msg -> {
            //引擎处理过程中产生的消息
        }
);
Salyut.setResultListener(
        result -> {
            //返回结果
        }
);
String script = {your script content};
TricoScript script = new TricoScript(yaml);
Salyut.execScript(script.getContent(),"","");

Maven

<dependency>
    <groupId>com.trico.salyut</groupId>
    <artifactId>salyut</artifactId>
    <version>0.0.8-SNAPSHOT</version>
</dependency>

架构

许可证

Salyut 使用 Apache 2.0 许可证,您可以免费下载,修改以及部署源代码。您还可以将Salyut Engine进行服务化封装,从而让Salyut Engine具有更强大的业务处理能力。

Salyut 还添加了Commons Clause 1.0条款,对于您通过Salyut Engine进行服务化封装后进行商业售卖做了限制。当然我们还是希望Salyut Engine能够更好的作出开源贡献,所以如果您对如何商用Salyut Engine有更好的想法,请随时与我们联系feedback@trico.cloud

商业应用

目前Salyut已经应用于Trico Cloud商业平台,Trico Cloud致力于通过提供爬虫云原生服务,解决高可用,低成本数据抓取,并为爬虫开发者与使用者提供更好的爬虫生态。

联系方式