从html中提取某些扩展链接

时间:2014-03-16 15:26:57

标签: bash sed awk grep

我有一个包含许多链接的HTML文件。我需要从页面中提取所有mp4链接,并使用sed / awk / grep将链接保存到另一个文件。
该页面可在page.html离线使用。
示例:页面包含:

  

<a title="Download this file..." target="_blank" href="http://webaddress.domain.org/videos/sometext/file_name_12.mp4">

所以输出文件应该有:

  

http://webaddress.domain.org/videos/sometext/file_name_12.mp4

同样,该页面可能包含几个mp4链接。

4 个答案:

答案 0 :(得分:4)

您可以使用grep选项PCRE尝试前瞻和后面的断言:

grep -oP '(?<=href=")[^"]+.mp4(?=")' file

<强>测试

$ cat file
<a title="Download this file..." target="_blank" href="http://webaddress.domain.org/videos/sometext/file_name_12.mp4">

$ grep -oP '(?<=href=")[^"]+.mp4(?=")' file
http://webaddress.domain.org/videos/sometext/file_name_12.mp4

答案 1 :(得分:2)

$ cat foo.html
<a href="http://example.com/foo.mp4">foo</a>
$ tr '"' '\n' < foo.html  | grep http | grep '\.mp4$' >> mp4s
$ cat mp4s
http://example.com/foo.mp4

这是做什么的:

  1. tr将所有双引号"转换为换行符\n
  2. grep所有包含http
  3. 的行
  4. grep在行尾
  5. 包含.mp4的所有行

答案 2 :(得分:1)

以下是使用url从长字符串中获取awk的好方法:

awk -F"http://" '/mp4/ {split($2,a,"\"");print FS a[1]}' file
http://webaddress.domain.org/videos/sometext/file_name_12.mp4

使用gnu awk

awk -v RS="http://" -F\" 'NR>1 && /mp4/ {print RS $1}' file
http://webaddress.domain.org/videos/sometext/file_name_12.mp4

答案 3 :(得分:1)

使用sed

sed -n 's/.*\(http[^>]\+\.mp4\).*/\1/p' your_offline.html > allmp4_links.txt