Utilisation de awk, sed ou grep pour analyser les Url de la page web de la source
Je suis en train d'analyser la source d'un téléchargement de la page web afin d'obtenir le lien d'inscription. Un one-liner marcherait bien. Voici ce que j'ai essayé jusqu'à présent:
Ce qui semble laisser de côté les pièces de l'URL à partir de certains des noms de page.
$ cat file.html | grep -o -E '\b(([\w-]+://?|domain[.]org)[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))'|sort -ut/ -k3
Cette obtient toutes les URL, mais je ne veux pas inclure des liens qui ont/sont les liens d'ancrage. Aussi je veux être en mesure de préciser l'domain.org/folder/:
$ awk 'BEGIN{
RS="</a>"
IGNORECASE=1
}
{
for(o=1;o<=NF;o++){
if ( $o ~ /href/){
gsub(/.*href=2/,"",$o)
gsub(/2.*/,"",$o)
print $(o)
}
}
}' file.html
stackoverflow.com/questions/1732348/...
Williamson: maintenant que renvoie des résultats similaires pour le deuxième exemple, mais j'ai besoin d'être en mesure d'éliminer les liens d'ancrage et de spécifier un domain.com/folder
grep -E
ne comprends pas non-capture de sous-modèles ou \w
échappe à l'intérieur des classes de caractères. Vous avez besoin d'utiliser grep -P
.Williamson: maintenant que renvoie des résultats similaires pour le deuxième exemple, mais j'ai besoin d'être en mesure d'éliminer les liens d'ancrage et de spécifier un domain.com/folder
OriginalL'auteur Astron | 2011-03-20
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à la seule analyse de quelque chose comme < a > balises, vous pouvez simplement correspondre à l'attribut href, comme ceci:
Qui ignore l'ancre et aussi de garantir que vous avez uniques. Ceci signifie que la page a bien formé (X)HTML, mais vous pourriez passer à travers bien Rangé premier.
OK, j'ai édité ma réponse à remédier à ce problème.
super, mais maintenant, il semble être compris d'autres liens (peut-être que je ne l'avais pas remarqué avant. Peut le grep déclaration a également spécifier le domain.com/folder/? Merci
assurez-vous d'ajouter ` | grep 'domaine.froid/dossier/" à la fin de la ligne.
OriginalL'auteur mjbommar
Et recherchez la chaîne "Références" dans la sortie. Post-traitement avec
sed
si vous en avez besoin.À l'aide d'un outil différent, parfois, rend la tâche plus simple. De temps en temps, un autre outil rend la tâche très simple. C'est un de ces moments.
OriginalL'auteur Mike Sherrill 'Cat Recall'