html - 在 shell 中抓取网页的算术
问题描述
所以,我在这里有示例代码:
#!/bin/bash
clear
curl -s https://www.cnbcindonesia.com/market-data/currencies/IDR=/USD-IDR |
html2text |
sed -n '/USD\/IDR/,$p' |
sed -n '/Last updated/q;p' |
tail -n-1 |
head -c+6 && printf "\n"
exit 0
这应该打印出一些数字范围 14000~15000
让我们从最基本的开始,我必须做什么才能打印result + 1
?因此,如果打印输出为 14000 并将其增加到 1 变为 14001。我认为 html2text 的结果是不可计算的,因为它应该是字符串输出而不是整数。
我想知道的更高级的是如何计算 2 curl 结果的结果?
解决方案
$ num=$(xidel -se '//div[@class="mark_val"]/span[1]/text()' 'https://url')
$ num=$((${num//,/}+1)) # num was 14050
$ echo $num
输出
14051
解释
$((...))
是算术代换。完成算术运算后,整个事情都被表达式的值所取代。见http://mywiki.wooledge.org/ArithmeticExpression
命令替换:"$(cmd "foo bar")"
使用参数 'foo bar' 执行命令 'cmd' 并且 "$(..)" 将被替换为输出。请参阅http://mywiki.wooledge.org/BashFAQ/002和http://mywiki.wooledge.org/CommandSubstitution
奖金
您可以直接在xidel中计算,感谢Reino使用xquery语法:
$ xidel -s <url> e 'replace(//div[@class="mark_val"]/span[1],",","") + 1'
并做 2 个值的加法运算:
$ xidel -s <url> -e '
let $num:=replace(//div[@class="mark_val"]/span[1],",","")
return $num + $num
'
推荐阅读
- bash - 如何让 PowerShell 在 Ubuntu 20.10 上获取环境变量?
- python - 如何用pygame检测按键?
- node.js - 如何修复我的 node.js 应用程序中的反射型 XSS 漏洞
- java - 如何使用 java 命名接口 (JNDI) 使用 Active Directory 验证用户凭据
- python - 如何停止视频流并重定向到烧瓶中的另一个网页
- database - 按 ID 排序 按日期间隔过滤 DynamoDB
- angular - 在 Angular 材料表中更改时计算并显示输入字段的总数
- angular - Angular:处理组件添加到表单事件
- python - Azure devops 管道 ArchiveFiles 错误:无法找到可执行文件:'zip'
- reactjs - 难以理解“react-redux”中的“useState”