前言
DataWorks 数据开发提供强大的工作流及调度能力,且近期上线了数据推送节点,这边我们就简单利用 Shell + 数据推送节点来完成每日天气预报的推送工作。
效果图
步骤一: 决定信息来源
打开飞猪天气预报页面,找到想要推送的城市天气,这边我们选杭州,打开页面的开发者工具,定位以下信息来源。
- 温度 (右边为 css 定位): div.header-info-detail-section-weather-temperature span.header-info-detail-section-weather-temperature-text
- 天气预报 (右边为 css 定位): p.bottom-summary
步骤二: 开发工作流
因为飞猪天气预报页面为 SSR (Server Side Rendering),我们可用 Shell 节点的 curl 及 xmllint 语法根据 DOM 位置就能解析出页面信息,这边需要三个节点。
节点1 新建赋值节点,选用 Shell 语言 (解析飞猪天气预报):
result="$(curl 'https://tianqi.fliggy.com/330100/' -H 'Content-Type: text/html' | xmllint --html --format --recover --nowarning --xpath '//p[@class="'"bottom-summary"'"]//text()' -)"; echo $result | sed 's/\\n/\n/g';
节点2 新建赋值节点,选用 Shell 语言 (解析飞猪天气温度):
result="$(curl 'https://tianqi.fliggy.com/330100/' -H 'Content-Type: text/html' | xmllint --html --format --recover --nowarning --xpath '(//div[@class="'"header-info-detail-section-weather-temperature"'"]//span[@class="'"header-info-detail-section-weather-temperature-text"'"]//text())[1]' -)"; echo $result;
节点3 新增数据推送节点,编辑推送内容:
组织工作流,建立上下游关系:
工作流的推送测试,可以查阅此篇文章。
步骤三: 发布工作流
将三个节点的调度时间安排在每日早上八点,提交到发布中心后发布,并于运维中心查看调度状况。透过上述三步骤后,即可于每天早上定时收到天气预报信息。
钉钉展示:
飞书展示:
小结
以上三步骤简单演示如何从网页信息中截取信息,基于同样的方式也能用于股票、机票、酒店等信息截取,而更进一步操作,我们还能利用这些信息再加工,组织出更有价值的资讯。