linux_china技术雷达linux_china技术雷达

Scout Lang

language
评估

ScoutLang是一门专注于Web爬虫的领域特定语言(DSL), 可以方便我们快速访问URL,解析HTML,提取数据等。 在实际的开发中,HTML抓取有时也扮演者非常重要的角色,当对方站点没有提供OpenAPI,方便获取数据, 那么通过HTML解析获取数据,就必不可少啦,如获取最新的版本发布,关注商品的价格变动,站点健康度检查等。

Scout的运行机制稍显复杂,它是通过调用FireFox来渲染HTML的,有同学可能会问,为何不直接抓取HTML进行解析? 主要目前的前端开发模式,DOM很多都是JS渲染的,你抓取的HTML可能就是一个最简单的一个HTML,完全没有其他信息, 所以要通过浏览器执行JS然后进行渲染,最终才能基于DOM结构来解析HTML,获取对应的数据。 所以Scout和普通的HTML Parser有非常显著的区别,如Beautiful Soup等,Scout会调用FireFox执行JS, 执行真正的渲染,而不是解析普通HTML文本。

Scout非常容易学习,基本就是goto访问某一URL,然后使用$$$选择特定的元素,接下来就是操作这些元素, 获取相应的信息,然后scrape命令采集这些数据,最后以被Scout以JSON输出作为最终抓取的结果, 方便其他程序基于JSON进行下一次分析和处理。

在实际的代码编写中,你的重点主要放在元素选择(selection),然后是管道操作(pipe),这个是Scout的核心理念, 其中元素选择遵循标准的CSS Selectors,你可以访问CSS Selector Reference, 做一个快速的了解。

此外Scout还内置Debug支持,执行SCOUT_DEBUG=true scout就可以进入Debug模式,然后以交互方式进行元素选取和分析。

Scout安装稍显复杂,你需要安装FireFox,然后是Geckodriver, 但是这些工作都是一次性的,所以也不是特别大的问题。

此外你还可以使用geckodriver Docker image,这样本地就不需要设置各种环境,如果容器环境等,也方便很多。

ScoutLang概览: Scout Lang

ScoutLang & Friends

References