Curso Web Scraping para SEO – Clase 6

Buscar todos los enlaces internos

 

A partir del paso anterior buscaremos todos los enlaces internos del sitio web, recorriendo cada página que encontremos y buscando enlaces dentro.

Enlace Patrocinado

Respondent.io

Respondent.io es una plataforma en línea que conecta investigadores y empresas con participantes para estudios de mercado y encuestas remuneradas. Su objetivo es facilitar la recopilación de datos cualitativos y cuantitativos mediante entrevistas, encuestas y pruebas de usuario

 

# -*- coding: iso-8859-15 -*-

# Proyecto Web Scraping para SEO con Python
# Clase 6: Buscar todos los enlaces internos# webscrap6
import urllib
import re

url_sitio = “https://evginformatica.blogspot.com/”
url_inicio=url_sitio
lista_enlaces = []


def buscar_enlaces(posicion,busqueda):
   
    url = lista_enlaces[posicion]
   
    htmluni = urllib.urlopen(url).read()
    html=urllib.unquote(htmluni).decode(“utf-8”)

    enlaces = re.findall(busqueda, html)
    for enlace in enlaces:
   
        #quitar href=’ y quitar comilla final
        enlace2 = enlace[6:-1]
   
        #enlaces excluidos
        #/search
        # o que contienen #
        # solo paginas .html
        anadir=True
        if enlace2.find(“.html”)<0:
            anadir=False
       
        if enlace2.find(“/search”)>0:
            anadir=False
       
        if enlace2.find(“#”)>0:
            anadir=False
       
        if enlace2 in lista_enlaces:
            anadir=False
           
        if anadir:
            lista_enlaces.append(enlace2)
   

if __name__ == “__main__”:  
    print “— Enlaces internos —“
   
    lista_enlaces.append(url_inicio)
    posicion = 0
    while True:
        #print “— “+lista_enlaces[posicion]
       
        busqueda = “href='”+url_sitio+“.+?'”
        buscar_enlaces(posicion,busqueda)
        busqueda = ‘href=”‘+url_sitio+‘.+?”‘
        buscar_enlaces(posicion,busqueda)
       
           
        posicion = posicion+1
        if posicion >= len(lista_enlaces):
            break
           
    i=1
    for lenlace in lista_enlaces:
        print str(i)+” “+lenlace       
        i=i+1
    

 

. se buscará los enlaces en cada página que vayamos encontrando.

. se hacen dos búsquedas porque algunos enlaces se ponen entre comillas normales y otras en comillas simples.

. se define la función def buscar_enlaces(posicion,busqueda):

para buscar los enlaces en una página que ya está añadida en la lista

 

. la linea

if __name__ == “__main__”:  

 

nos indicará el punto de entrada del program