使用wget检索网页中链接的一部分

时间:2013-06-08 14:45:05

标签: shell batch-file hyperlink wget

我想 retrieve a specific part of a link in this web page using batch

首先,要检索此网页,我使用了以下命令:

wget --convert-links -N "http://dl.bukkit.org/downloads/bukkit/list/rb/"

然后,在这个网页中,我想得到这一行:

<a href="http://dl.bukkit.org/downloads/bukkit/get/01844_1.4.7-R1.0/bukkit.jar" class="tooltipd" title="Download Bukkit, version 1.4.7-R1.0">

然后,只检索链接中的构建名称

01844_1.4.7-R1.0

所以,我用过这个:

for /f "delims=" %%i in ('grep "/downloads/bukkit/view/" index.html ^| head --lines=2') do set build=%%i
del index.html
set build=%build:~68,16%
echo %build%

总而言之,我找回了我想要的东西,但我认为还有另外一种方法可以做到,因为你可以猜到,构建名称一直没有相同的长度(有时候“00718_1.1-R4”=仅限此版本名称的12个字符)我使用了“固定”方法(设置build =%build:~68,16%)检索它......

那么,如果有人有这样做的最佳方法,可以使用斜杠作为分隔符?但我不知道该怎么做。

提前感谢您的帮助。

祝你有个美好的一天!

2 个答案:

答案 0 :(得分:1)

GNU sed

for /f %%i in ('wget "http://dl.bukkit.org/downloads/bukkit/list/rb/" --output-document=- 2^>nul^|sed -n "/downloads\/bukkit\/get\//{s:.*/\([R0-9_.-]\+\).*:\1:p;q}"') do set "build=%%i"
echo %build%

不需要index.html

答案 1 :(得分:0)

del index.html
FOR /f "tokens=6delims=/" %%t IN ("%build%") DO SET build=%%t
echo %build%

应返回所需的字符串。