Vous n'êtes pas identifié(e).

  • Contributions :
  • Vos boîtes de messages privés sont vides.

🟣 Trouver les ancres des BL + DF / NF


#1 2015-10-02 13:01:57

Mention NicolasWeb
🥈 Grade : Soldier

Membre du CercleOfficierStratège100likes1000 messages
Lieu : Besançon (France)
Inscription : 2015-09-30
Messages : 1 078
Likes : 189

Rédaction
Sémantique
Site Web

Trouver les ancres des BL + DF / NF

Voici un script tout chaud qui date de ce midi. En fait, ça fait un moment que je l'ai fait et je l'utilise de temps en temps et j'ai décidé de la simplifier grandement pour le distribuer sur le forum (et plus tard sur mon site).

Le but : d'après une liste d'url, trouvé les liens qui pointent vers un domaine et ressortir l'url, l'ancre et si le lien est en DoFollow. Vous l'avez peut-être compris, cela me sert pour analyser mes BL et ceux des concurrents. big_smile (à condition d'avoir une liste des URL qui contiennent des liens vers le site à analyser évidemment)

Le script fonctionne avec Python3 et nécessite l'installation de pyquery et requests :


# -*- coding: utf-8 -*-
import sys
# pip install requests
import requests
# pip install pyquery
from pyquery import PyQuery as pq

# quelques parametres à changer
fichier = "listeurls.txt"
if len(sys.argv) < 2 :
    print("entrer l'url à trouver")
    sys.exit()
 
domaineATrouver = sys.argv[1]

# définition de fonction
# fonction pour lire un fichier
def lireFichier(fichier):
    with open(fichier, encoding='utf-8', errors='ignore') as f:
        content = f.readlines()
    return content

print("url;ancre;cible;rel")

# lecture du fichier
contenu = lireFichier(fichier)
# boucle sur les url
for uneUrl in contenu :
    urlEnCours = uneUrl.replace('\n','')
    try :
        response = requests.get(urlEnCours)
        doc = pq(response.content)
        lesLiens = doc("a")
        for lien in lesLiens :
            href = pq(lien).attr("href")
            rel = pq(lien).attr("rel")
            if rel is None :
                rel = "DF"
            else :
                rel = "NF"
            ancre = pq(lien).html()
            if ancre is not None :
                if ancre.find(domaineATrouver) > -1 :
                    # on a trouvé un lien
                    print(urlEnCours + ";" + ancre + ";" + href + ";" + rel)  
    except :
        pass
 

Quelques défauts : parfois il arrive pas à sortir les infos d'une page et donc il ne la prend pas en compte.

Utilisation :

On doit créer un fichier "listeurls.txt" qui contient tous les urls ainsi :


http://www.url1.com
http://www.url2.com
http://www.url3.com
etc.
 

Ensuite on peut l'exécuter comme cela :

python script.py www.lesite.net

Avec www.lesite.net qui doit être dans le href des liens analysés sur la page.

La sortie est dans la console avec cette forme :

url;ancre;cible;rel
http://urlquicontientlelien.com;ancre;http://www.lesite.net/;DF
http://urlquicontientlelien2.com;ancre;http://www.lesite.net/;NF
etc.
 

On peut rediriger sa sortie vers un fichier :

python script.py www.lesite.net > resultats.csv

Donc après on peut l'exploiter dans Excel ou Calc puisque c'est un format CSV.
Voilà, j'espère que c'est clair et en tout cas ça serait sympa que quelques personnes testent cela pour me faire un retour wink

0
J'aime ❤️

🔴 Hors ligne

#2 2016-05-29 10:26:13

Mention NicolasWeb
🥈 Grade : Soldier

Membre du CercleOfficierStratège100likes1000 messages
Lieu : Besançon (France)
Inscription : 2015-09-30
Messages : 1 078
Likes : 189

Rédaction
Sémantique
Site Web

Re : Trouver les ancres des BL + DF / NF

@Dukofo a priori non, mais ça fait un moment que j'ai pas retravaillé avec ce script

0
J'aime ❤️

🔴 Hors ligne

Pied de page des forums