【问题标题】:Retrieve a part of a link in a web page with wget使用 wget 检索网页中的部分链接
【发布时间】:2013-06-08 14:45:04
【问题描述】:

我想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%)找回它...

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

提前感谢您的帮助。

祝你有美好的一天!

【问题讨论】:

    标签: shell batch-file hyperlink wget


    【解决方案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

    【讨论】:

    • 嘿,谢谢它也可以,但我无法在变量中检索命令的结果。我已经尝试过 FOR /f "delims=" %%i IN ('WGET "dl.bukkit.org/downloads/bukkit/list/rb" --output-document=- 2>nul|sed -n "/downloads\/bukkit\/get\/ /{s:.*/([R0-9_.-]\+).*:\1:p;q}"') 设置结果=%%i
    • 我进行了编辑。使用^ 转义&gt;|。顺便说一句:这个答案仅供参考。不要更改接受。
    • 哦,完美!好的接受,因为否则我会改变。非常感谢:)!
    【解决方案2】:
    del index.html
    FOR /f "tokens=6delims=/" %%t IN ("%build%") DO SET build=%%t
    echo %build%
    

    应该返回所需的字符串。

    【讨论】:

      猜你喜欢
      • 2014-10-31
      • 2010-12-05
      • 2013-10-07
      • 2019-09-29
      • 2018-08-23
      • 2010-11-08
      • 2012-01-15
      相关资源
      最近更新 更多