Bash 脚本从 html 页面获取所有 mp3 文件

Bash 脚本从 html 页面获取所有 mp3 文件

.mp3我正在考虑一种从 html 页面获取文件的方法,我确实手动使用了wget

wget http://www.podcastfrancaisfacile.com/wp-content/uploads/files/question-prix.mp3

所以,我尝试这个自动获取所有 mp3 文件的方法

grep -i -E -o "content="http://www.podcastfrancaisfacile.com/wp-content/uploads/files/*.mp3" "$thread" | sed 's/ /_/g' - > "$names"

其中“ $thread”是 html 文件的名称,“ $names”是作为输出的文件名列表。

sed -ne 's/.*\(http[^"]*\).*/\1/p' < "$thread"

有关的

Bash 脚本从 Ebay HTML 页面中提取一些信息

如何使用 awk 从 HTML 文件中提取 URL?

bash - 从包含多个链接的 html 文件中提取文件名

答案1

以下脚本将下载.mp3HTML 文件中的每个链接或变量中包含的 URL $thread。它利用lynx -dump -listonly,这是 shell 脚本从 HTML 文件或 URL 中提取 URL 列表的最简单、最方便的方法之一。

该脚本要求您知道列出文件的索引页的 URL .mp3。或者包含该页面已下载副本的文件名。

您没有提到索引 URL 是什么,所以我仅使用伪造的 URLhttp://www.podcastfrancaisfacile.com/mp3-list.html作为示例。替换为正确的 URL 或文件名。

#! /bin/bash

thread='http://www.podcastfrancaisfacile.com/mp3-list.html'
#thread='mp3-list.html'

while IFS= read -r url ; do
  wget "$url"
done < <(lynx -dump -listonly "$thread" | awk '/\.mp3$/ {print $2}')

答案2

你可以使用wget递归检索选项。例如:

$ wget \
    -e robots=off \
    --accept '*.mp3' \
    --level=1 \
    --recursive \
    --no-directories \
    "${thread}"

相关内容