从 HTML 文件中提取字符串

从 HTML 文件中提取字符串

我需要一个 sh 脚本来从 html 文件中获取文本,然后使用该文件下载

wget website.com/link_123456789 -O 'testfile.txt'

该文件的全部内容位于此 pastebin

但你不需要所有这些,只需要重要的几行

<br>
            <IFRAME style="max-width: 850px;" SRC="http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html" FRAMEBORDER=0 MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING=NO width="100%" HEIGHT=450></IFRAME>
            <br><br>
            <p>

http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html我需要文件中的文本。

是否有一个简单的答案可以与其他字符串一起使用?

答案1

使用awk和多个分隔符-F

searchfor="vodlocker"
wget -q -O- http://pastebin.com/raw/VbrXHEYd | awk -F'SRC="|"' '/SRC/ && /'"$searchfor"'/  {print $4}'

示例输出:

$ searchfor="vodlocker"; wget -q -O- http://pastebin.com/raw/VbrXHEYd | awk -F'SRC="|"' '/SRC/ && /'"$searchfor"'/  {print $4}' 
http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html

答案2

grep与 PCRE 一起使用( -P):

grep -Po 'SRC="\K[^"]+(?=")' testfile.txt

sed

sed -nr 's/.*SRC="([^"]+)".*/\1/p' testfile.txt

两者都采用所需的字符串,用双引号引起来,并SRC=在前面加上。

例子:

% wget -q -O- http://pastebin.com/raw/VbrXHEYd | grep -Po 'SRC="\K[^"]+(?=")'      
http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html

% wget -q -O- http://pastebin.com/raw/VbrXHEYd | sed -nr 's/.*SRC="([^"]+)".*/\1/p'
http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html

答案3

我刚刚发现小狗, 这很棒!

$ curl -s https://pastebin.com/raw/VbrXHEYd | pup 'iframe attr{src}'

结果

http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html

答案4

你也可以html2使用sed

$ curl -s http://pastebin.com/raw/VbrXHEYd | html2 | sed '/iframe\/@src=/!d;s/^.*src=//'
http://vodlocker.com/embed-wrdlm4dbigu4-850x450.html

相关内容