bash - Grep,awk 无法处理 HTML curl 文件(从 html 获取链接)
问题描述
我已经在 stackoverflow 上阅读了很多页面,但在我的 szenario 上没有任何效果。
我想从该网站获取包含“cedock”的最后一个匹配(或所有)URL:“https://4pda.ru/forum/index.php?showtopic=973246&st=4040#Spoil-97613600-1”
当我保存文件然后在我的文件编辑器中进行搜索时,它工作正常,但是这些命令都没有对我有用,以获取 url 或过滤此文件中的任何内容:
curl -k -s "https://4pda.ru/forum/index.php?showtopic=973246&st=4040#Spoil-97613600-1" | awk -F'SRC="|"' '/SRC/ && /'"cedock"'/ {print $4}'
curl -k -s "https://4pda.ru/forum/index.php?showtopic=973246&st=4040#Spoil-97613600-1" | grep -o 'FOTA-OTA/V8-R851T02-LF1V342.014883.zip.*zip</a><br /></div></div><br'
grep "<a href=" 4pda.txt |sed "s/<a href/\\n<a href/g" |sed 's/\"/\"><\/a>\n/2' |grep href |sort |uniq
网站本身有什么问题吗?因为我在其他网站上使用类似的命令并且它在那里工作。
所需的输出是 cedock 的最新下载 url,例如现在: http://na-update.cedock.com/apps/resource2/V8R851T02/V8-R851T02-LF1V351/FOTA-OTA/V8-R851T02-LF1V351 。 015103.zip
解决方案
与xmlstarlet
:
curl -k -s 'https://4pda.ru/forum/index.php?showtopic=973246&st=4040#Spoil-97613600-1' \
| xmlstarlet format --html 2>/dev/null \
| xmlstarlet select --template --value-of '//html/body/div/div[10]/div[2]/div[1]/div[2]/a[last()]/@href' -n
输出:
http://na-update.cedock.com/apps/resource2/V8R851T02/V8-R851T02-LF1V351/FOTA-OTA/V8-R851T02-LF1V351.015103.zip
我曾经xmlstarlet format --html
从损坏的 HTML 中保存可纠正的部分。
更新
要获取域 na-update.cedock.com 的最后一个 URL:
curl -k -s 'https://4pda.ru/forum/index.php?showtopic=973246&st=4040#Spoil-97613600-1' \
| xmlstarlet format --html 2>/dev/null \
| xmlstarlet select --template --value-of '//a[last()]/@href[.=contains(.,"http://na-update.cedock.com")]' -n
推荐阅读
- java - 如何编写 Dockerfile 将我的 war 文件部署到 jboss 7.2 中?
- python - 如何在pyqt5的QTextEditor中加粗选定的文本
- pug - 在本地提供数据时,Bootstrap-Table 不搜索和总计行
- python - 如何将具有整数和小数的数字文件附加到python中的列表/数组
- c++ - 添加 3*3 矩阵的代码有什么错误?
- android - 错误:没有为类“对象”定义方法“数据”?
- python - 列表中的嵌套字典
- dart - 在 Dart 中:当一个包被另一个函数所掩盖时,如何从一个包中调用一个函数?
- apache-flink - 与多个任务管理器共享相同的密钥
- awk - 在文本行中返回多个字符串匹配的多个位置