Transformas un texto en un texto plano con python

Para transformar en cualquier texto en uno plano

 

def limpiar_acentos(text):
  acentos = {'á': 'a', 'é': 'e', 'í': 'i', 'ó': 'o', 'ú': 'u'}
  for acen in acentos:
    if acen in text:
      text = text.replace(acen, acentos[acen])
  return text



def texto_plano(texto):
    
    texto = limpiar_acentos(texto.lower())
    texto = re.sub('[^A-Za-z0-9]+', ' ', texto)
       
    return texto

def contador_palabras(texto):
    contador = {}
    palabras = texto.split(' ')
    for palabra in palabras:
        if palabra not in contador:
            contador[palabra] = 1
        else:
            contador[palabra] += 1
    return contador

def buscar_palabra(palabra,texto):
    tx = contador_palabras(texto_plano(texto))
    if palabra in tx:
        return palabra,tx[palabra]
    else:
        return palabra,0

 

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Cargando…

Combinar varias listas en un ciclo for con Python

Si queremos combinar varias lista en un “loop” for en Python podemos utilizar un comando llamado “zip”

Este es el ejemplo para por ejemplo imprimir una lista en grupos de dos palabras o tres

# Estas son las listas

lis1 = ['uno','dos','tres','cuatro','cinco','seis','siete']
lis2 = lista[1:]
lis3 = lista[2:]

# Aquí imprimimos en grupos de dos palabras

for (li,lis,) in zip(lis1,lis2): 
     print (li,lis)

# Aquí en grupos de tres palabras

for (li,lis,liss) in zip(lis1,lis2,lis3): 
     print (li,lis,liss)

 

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Cargando…

Scrapear html con regex en Python

Si queremos hacer un scraper de una página web y sacar algunos de los datos de ella aquí encontraras algunos ejemplos utilizando la libreria re de python.

h1s = re.findall(r'<h1.*?>(.+?)<',html)
h2s = re.findall(r'<h2.*?>(.+?)<',html)
h3s = re.findall(r'<h3.*?>(.+?)<',html)
h4s = re.findall(r'<h4.*?>(.+?)<',html)


titulo = re.findall(r'<title>(.+?)</title>',html)
meta_titulo = re.findall(r'<meta name="title" content="(.+?)"',html)
meta_descripcion = re.findall(r'<meta name="description" content="(.+?)"',html)
meta_keywords = re.findall(r'<meta name="keywords" content="(.+?)"',html)

 

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Cargando…

Simple función en Python para eliminar acentos o tildes

Es posible que en alguna ocasión, necesitemos eliminar todos los acentos de un texto, aquí tienes unas simples líneas con las que eliminar todas las tildes utilizando el lenguaje de programación Python.

def limpiar_acentos(text):
	acentos = {'á': 'a', 'é': 'e', 'í': 'i', 'ó': 'o', 'ú': 'u', 'Á': 'A', 'E': 'E', 'Í': 'I', 'Ó': 'O', 'Ú': 'U'}
	for acen in acentos:
		if acen in text:
			text = text.replace(acen, acentos[acen])
	return text


1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Cargando…

Descargar archivo por FTP con Python

Si necesitamos descargar algún archivo desde un servidor remoto, lo podemos hacer gracias a Python.
Entre las diferentes utilidades que se le puede dar a este pequeño pedazo de código seria la de por ejemplo hacer descargar los Backups de un servidor de forma automática.

 

"""
Recursively backup all the files from a remote directory using ftp.
"""

# information about the source ftp server
# and the target directory on my laptop

hostname = 'ftp.dlptest.com'
username = '[email protected]'
password = 'e73jzTRTNqCN9PYAAjjn'
start_directory = '/'
backup_dir = 'C:\\Users\\Oficina\\Desktop\\back_wp\\hidro\\'

import ftplib
import os
import datetime

def get_files_directories():

    dirlisting = []
    
    ftp_obj.retrlines('LIST',callback=dirlisting.append)
    
    files = []
    directories = []
    
    for l in dirlisting:
        lastspace = l.rindex(' ')
        file_name = l[lastspace+1:]
        if l[0] == 'd':
            directories.append(file_name)
        elif l[0] == '-':
            files.append(file_name)
            
    return files,directories
    
def backup_directory(local_dir,remote_dir):

    os.chdir(local_dir)
    ftp_obj.cwd(remote_dir)
    print('In directory '+remote_dir)

    files,directories = get_files_directories()

    for f in files:
        print('Backing up OK'+f)
        try:
            ftp_obj.retrbinary('RETR '+f, open(f, 'wb').write)
        except ftplib.error_perm:
            print('Skipping '+f+' due to permissions')
        
    for d in directories:
        newremote = remote_dir+d+'/'
        newlocal = local_dir+'\\'+d
        try:
            os.mkdir(newlocal)
        except:
            continue
        backup_directory(newlocal,newremote)
        
# Main program

# backup directories under here

os.chdir(backup_dir)

# Create directory with today's date

datestring = str(datetime.date.today())

os.mkdir(datestring)
os.chdir(datestring)
local_dir = os.getcwd()

# connect to ftp server

ftp_obj = ftplib.FTP(host=hostname, user=username, passwd=password)

# back up everthing from top directory

remote_dir = start_directory

backup_directory(local_dir,remote_dir)

# quit ftp connection

ftp_obj.quit()


1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Cargando…

Espinear textos con Python (FÁCIL)

Si tenemos un texto en formato “spin”  queremos transformarlo en texto normal este código en python nos hará el trabajo.

 """Ejemplo Texto Spin:

    Hola {mi nombre|me llamo|soy} {Antonio|Toni|Juan} y me gustan {los coches|las motos|los caballos}
    
    """


def spin(content):
   
    start = content.find('{')
    end = content.find('}')

    if start == -1 and end == -1:
        #none left
        return content
    elif start == -1:
        return content
    elif end == -1:
        raise "unbalanced brace"
    elif end < start:
        return content
    elif start < end:
        rest = spin(content[start+1:])
        end = rest.find('}')
        if end == -1:
            raise "unbalanced brace"
        return content[:start] + random.choice(rest[:end].split('|')) + spin(rest[end+1:])

 

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Cargando…

¿Como hacer comentarios en Python? (SOLUCIÓN)

Los comentarios es algo muy importante a la hora de programar, ya sea para dar información adicional para un futuro como para ayudar a otras personas involucradas en el proyecto.

Para comentar podremos utilizar la almohadilla “#” para comentar una línea o tres comillas para comentar un texto más largo de varios renglones, en este caso se pueden utilizar tanto las comillas simples como las comillas dobles siempre en grupos de tres.  Aquí tienes un ejemplo para que veas lo fácil que es.

# Aquí pedimos el nombre

nombre = input('¿Cual es tu nombre?')

# Esta línea hace que se imprima el resultado

print ('Tu nombre es: ' + nombre)

"""
Así de simple es comentar en Python, ESTO ES PARA COMENTAR UN TEXTO Más LARGO O EN 

                VARIAS Líneas

   Recuerda: Comentar es importante y ayuda a que tu trabajo sea más fácil de entender por otros humanos, las maquinas ignoran estas líneas
"""
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Cargando…

Selenium Navegador Basico (EJEMPLO PYTHON)

Selenium es la librería que mas cariño le tengo, ya con ella empece a programar en Python.

Mis inquietudes que me hicieron empezar a programar fue la creación de bots y esta librería es la mejor, cierto es que con el paso del tiempo me estoy haciendo mas purista.

Ejemplo para lanzar el navegador Firefox:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://noteando.com/')
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Cargando…

Modulo requests de Pytho (EJEMPLOS)

Este es uno de mis modulo preferidos por su sencillez y gran potencia, para que veas lo fácil que es, solo necesitamos dos lineas, la tercera es para validar la conexión.

Ejemplo:

import requests
html = requests.get('https://noteando.com/')
html.encoding = 'utf-8'
print (html.status_code) # Si respondo 200 es que todo esta OK

 

El modulo requests de python se utiliza para conectarnos a diferentes paginas por diversos motivos.

Este ejemplo se basa a la hora de hacer algún bot o script el cual queremos que pase lo mas desbastecido posible.

Para hacer esto tenemos que crear una cabecera convincente y no esta de mas añadir un referer a nuestra cabecera.

import requests

user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'

referer = 'https://noteando.com/'

header = {'User-Agent': user_agent , 'referer': referer }
 
html = requests.get('https://noteando.com/test-referer.php', headers = header, verify=False, stream=True)
html.encoding = 'utf-8'
print (html.text) # Aquí veras el código fuente de la pagina

Información Añadida:

El User-Agent: Esta es una información que les tramite nuestro navegador a pagina que estamos visitando para mejorar nuestra experiencia como usuario entre otras funciones.

El referer: Le informa a la pagina de donde llegamos, es decir la pagina donde hemos hecho click para llegar aquí.

 

Y Ahora con Proxys:

import requests

user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'

referer = 'https://noteando.com/'

http_proxy  = "http://10.10.1.10:3128"
https_proxy = "https://10.10.1.11:1080"
ftp_proxy   = "ftp://10.10.1.10:3128"

proxyDict = { 
              "http"  : http_proxy, 
              "https" : https_proxy, 
              "ftp"   : ftp_proxy
            }


header = {'User-Agent': user_agent , 'referer': referer }
 
html = requests.get('https://noteando.com/test-referer.php', headers = header, verify=False, stream=True , proxies = proxyDict)
print (html) # Aquí veras el código fuente de la pagina

 

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Cargando…

Saber la ip de un dominio con Python y el modulo requests (EJEMPLO)

Para saber cual es la ip de un dominio podemos utilizar el modulo de requests de python.

Aquí tenemos un ejemplo:

import requests

html = requests.get('https://noteando.com/' verify=False, stream=True)

ip = html.raw._connection.sock.getpeername()

print (ip)

 

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Cargando…