Iniciación a programación en Python

Club para webmasters Foros Cursos Iniciación a programación en Python

Viendo 8 entradas - de la 1 a la 8 (de un total de 8)
  • Autor
    Entradas
  • #12758 Karma: 0
    David Cuesta
    Superadministrador
    149
    ChorriPuntos 6.888
    Curso SEO
    ChorriCuesta

    Hilo de discusión sobre el curso Iniciación a programación en Python

    #13069 Karma: 0
    Daniel García Aparicio
    Participante
    1
    ChorriPuntos 395
    Nuevo

    Jugando con el ranker para ir familiarizándome con python he realizado una modificación muy sencilla al proxies.py con idea de que coja los proxies de un fichero proxies.txt. De esta forma se le puede acoplar muy fácilmente otro programa o modulo que scrapee proxies. Aunque es muy sencillo puede ser interesante que compartamos las ideas entre todos, seguro que podemos hacer algo chulo.

    # Nuevo proxies.py

    
    # Importo los proxies desde proxies.txt
    import os
    f = open("proxies.txt", "r")
    lines = f.readlines()
    lista_proxies = []
    for line in lines:
        lista_proxies.append(line)
    
    #13071 Karma: 0
    israel
    Participante
    19
    ChorriPuntos 911
    Pionero
    😎

    Hola Daniel, esta de lujo. Te invito a crear el módulo y compartirlo con los compañeros. Un saludo

    EDIT: Simplemente mencionar que para que funcione es necesario crear un dict tal cómo se explica en la clase del Rank Tracker.

    • Esta respuesta fue modificada hace 5 meses, 2 semanas por israel.
    #13193 Karma: 0
    Firvi
    Participante
    1
    ChorriPuntos 260
    Nuevo

    Gracias Daniel, muy buen aporte.

    Yo sigo proponiendo Isra, ya para acabar de cerrar el ranktraker molaria un pequeño tutorial usando django o flask para que esos datos te los muestre en una web jejje por pedir

    #13194 Karma: 0
    israel
    Participante
    19
    ChorriPuntos 911
    Pionero
    😎

    Eso daría para un curso aparte 😋

    #13195 Karma: 0
    Firvi
    Participante
    1
    ChorriPuntos 260
    Nuevo

    jajaj habia que intentarlo 🙂

    #13269 Karma: 0
    Atreyu
    Participante
    4
    ChorriPuntos 799
    ChorriSEO aprendiz

    Muy buenas,

    He modificado un poco el código de Isra para recuperar título, descripción y headings de los 10 primeros resultados de una búsqueda en google.

    Puede ser útil para tener una idea del artículo a escribir.

    A cuidarse!

    # Archivo de arranque del programa (start.py).
    from searchEngine.google import GoogleSearch
    from headings.headings import headings
    
    # Importamos la libreria SYS y otras
    import sys 
    import io
    import os
    
    #Recupero resultados en google para la keyword
    keywords = "claustrofobia"
    urls = GoogleSearch(keywords)
    if urls.error == "ko":
         print("Mierda...Error... no lo he definido...")
         exit()
    
    #uso un directorio para guardar los ficheros de resultados. Si no existe lo creo
    directorio = "Ficheros"
    try:
      os.stat(directorio)
    except:
      os.mkdir(directorio)
    
    #abro fichero para escribir headings
    f = open(directorio + "\\" + keywords + ".txt", "w", encoding="utf-8")
    for x in urls.listaUrls:
        #Para cada url recupero título, descripción y sus headings
        hola = headings(x)
        if hola.error == "ko":
            print("Error xxx")
            continue
        f.write(x + "\n")
        f.write("Título: " + hola.titulo + "\n")
        f.write("Descripción: " + hola.descripcion + "\n")
        f.write("Headings: " + "\n")
        for h in hola.headings:
            f.write(h + "\n")
        f.write("\n")     
     
    f.close
    # Archivo google.py (para buscar en google y recuperar las urls)
    # Importamos la librería requests 
    import requests 
    # Importo la librería del Rank Tracker
    from bs4 import BeautifulSoup
    class GoogleSearch(): 
       
        listaUrls = []
        error = ""
        def __init__(self, QUERY): 
            URL = "https://www.google.com/search?q=%s&oq=%s" % (QUERY, QUERY)
            headers =  {"user-agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36"}
            resp = requests.get(URL, headers = headers)
            html = resp.content
    
            if resp.status_code == 200: 
                soup = BeautifulSoup(html, "html.parser")
                links = soup.find_all("div", {"class" : "g"})
                for x in links:
                    a = x.find("a", href = True)
                    u = a["href"]
                    if str(u).startswith("http"):
                        if "#" not in u:
                            self.listaUrls.append(u)
                        else:
                            self.listaUrls.append(str(u).split("#")[0])
                #print(len(self.listaUrls))
                self.error = "ok"
            else: 
                self.error = "ko"
                print ("Hay un error al procesar la solicitud: ", resp.status_code)
    # Archivo headings. (Para cada encontrada en google recupero título, descripción y headings)
    import requests 
    # Importo la librería del Rank Tracker
    from bs4 import BeautifulSoup
    class headings(): 
        
        titulo = ""
        descripcion = ""
        headings = []
        error = ""
    
        def __init__(self, URL): 
            self.headings.clear()
            headers =  {"user-agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36"}
            resp = requests.get(URL, headers = headers)
            html = resp.content
    
            if resp.status_code == 200: 
                soup = BeautifulSoup(html, "html.parser")
                self.titulo = soup.title.text
                if soup.find("meta", property="description"):
                    self.descripcion = soup.find("meta", property="description").get('content')
                elif soup.find("meta", property="og:description"):
                    self.descripcion = soup.find("meta", property="og:description").get('content')
                elif soup.find("meta", property="twitter:description"):
                    self.descripcion = soup.find("meta", property="twitter:description").get('content')
    
                headers = soup.find_all(["h1", "h2", "h3", "h4"])
    
                for x in headers:
                    h = str(x.name)
                    self.headings.append("  "*(int(h[-1])-1) + h + " - " +  x.getText().strip())
                    
                self.error = "ok"
            else: 
                self.error = "ko"
                print ("Hay un error al procesar la solicitud: ", resp.status_code)
    • Esta respuesta fue modificada hace 5 meses, 1 semana por Atreyu.
    #13295 Karma: 0
    Atreyu
    Participante
    4
    ChorriPuntos 799
    ChorriSEO aprendiz

    Buenas Isra,

    Me ha molado mucho el curso.

    Veo que Visual Studio Code tiene un depurador/debug muy bueno.

    Creo que podría estar muy bien hacer un minivideo de unos minutos explicando como usarlo para ver que hace la aplicación paso a paso y el contenido de las variables en tiempo real.

    Sin duda puede ser muy útil para descubrir errores.

    Un saludo!

Viendo 8 entradas - de la 1 a la 8 (de un total de 8)
  • Debes estar registrado para responder a este debate.