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.

 

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

 

Compartir