需要包含大量垃圾的URL的名称。 (高级BASH)

时间:2014-03-03 09:59:26

标签: bash url wget identify

http://romhustler.net/file/54654/RFloRzkzYjBxeUpmSXhmczJndVZvVXViV3d2bjExMUcwRmdhQzltaU5UUTJOVFE2TVRrM0xqZzNMakV4TXk0eU16WTZNVE01TXpnME1UZ3pPRHBtYVc1aGJGOWtiM2R1Ykc5aFpGOXNhVzVy< - 需要识别的网址

http://romhustler.net/rom/ps2/final-fantasy-x-usa< - 家长网址

如果您复制粘贴此网址,您将看到浏览器识别文件名称。我怎样才能获得一个bash脚本来做同样的事情?

我需要WGET第一个URL,但因为它将再增加100个项目,我无法复制粘贴每个URL。

我目前为所有文件设置了菜单。只是不知道如何单独批量下载每个文件,因为文件的URL没有匹配的模式。

*我工作菜单的比特:

                    #Raw gamelist grabber
    w3m http://romhustler.net/roms/ps2 |cat|egrep "/5" > rawmenu.txt

                    #splits initial file into a files(games01) that contain 10 lines.
                    #-d puts lists files with 01
    split -l 10 -d rawmenu.txt games

                    #s/ /_/g - replaces spaces with underscore
                    #s/__.*//g - removes anything after two underscores
    select opt in\
    $(cat games0$num|sed -e 's/ /_/g' -e 's/__.*//g')\
    "Next"\
    "Quit" ;

    if [[ "$opt" =~ "${lines[0]}" ]];
    then
        ### Here the URL needs to be grabbed ###

必须要做的是BASH。这可能吗?

1 个答案:

答案 0 :(得分:0)

似乎romhustler.net在完整下载页面上使用了一些Javascript来隐藏页面加载后几秒钟的最终下载链接,可能是为了防止这种网页抓取。

但是,如果他们使用ZIP文件的直接链接,我们可以这样做:

# Use curl to get the HTML of the page and egrep to match the hyperlinks to each ROM
curl -s http://romhustler.net/roms/ps2 | egrep -o "rom/ps2/[a-zA-Z0-9_-]+" > rawmenu.txt

# Loop through each of those links and extract the full download link
while read LINK
do
    # Extract full download link
    FULLDOWNLOAD=`curl -s "http://romhustler.net$LINK" | egrep -o "/download/[0-9]+/[a-zA-Z0-9]+"`
    # Download the file
    wget "http://romhustler.net$FULLDOWNLOAD"
done < "rawmenu.txt"