web-dev-qa-db-fra.com

Extraire des chaînes d'un fichier HTML

J'ai besoin d'un script sh va obtenir le texte d'un fichier html, je télécharge le fichier avec

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

le contenu complet de ce fichier est situé à cette Pastebin

Mais vous n'avez pas besoin de tout cela, juste des lignes importantes

<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>

J'ai besoin du texthttp://vodlocker.com/embed-wrdlm4dbigu4-850x450.html du fichier.

Existe-t-il une réponse simple à utiliser avec d'autres chaînes?

2
user483937

Utilisation de awk et de plusieurs délimiteurs pour -F

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

Exemple de sortie:

$ 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.

Utilisation de grep avec PCRE (-P):

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

Avec sed:

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

Les deux prennent la chaîne désirée entre guillemets et ont SRC= devant.

Exemple:

% 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

Depuis, il a demandé un script Shell interactif, cela peut être une alternative (en supposant que le code HTML est téléchargé sur votre PC). Veuillez copier les informations suivantes dans 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. Enregistrez le fichier sous le nom somename.sh .

  2. Maintenant, donnez au fichier les autorisations exécutables:

    chmod a+x /path/to/somename.sh
    
  3. Ensuite, exécutez le fichier en tant que:

    sh /path/to/somename.sh
    

Voici une capture d'écran:

1

0
Raphael

vous pouvez aussi utiliser html2 avec sed:

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