web-dev-qa-db-ja.com

HTMLファイルから文字列を抽出する

私はファイルをダウンロードするhtmlファイルからテキストを取得するshスクリプトが必要です

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>

ファイルからtexthttp://vodlocker.com/embed-wrdlm4dbigu4-850x450.htmlが必要です。

他の文字列を操作する簡単な答えはありますか?

2
user483937

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
A.B.

PCREでgrepを使用(-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
2
heemayl

彼は対話型のシェルスクリプトを要求したので、これが代替手段である可能性があります(htmlがPCにダウンロードされると仮定します)。以下をGeditにコピーしてください:

#!/bin/sh
echo -n "Please enter the name of the website (such as vodlocker): "
read site

wget -c $(grep IFRAME ~/Downloads/VbrXHEYd.html | awk '/<IFRAME/ {print $4}' | awk -F'"' '{print $2}')
  1. ファイルをsomename.shとして保存します。

  2. 次に、ファイルに実行可能権限を付与します。

    chmod a+x /path/to/somename.sh
    
  3. 次に、ファイルを次のように実行します。

    sh /path/to/somename.sh
    

これがスクリーンショットです:

1

0
Raphael

html2sedとともに使用することもできます。

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