SCRAPPING con Python extrayendo Unicode para Criptografia!!! [Mini Curso Python]
Hoy vamos a extraer una tabla de Internet que contiene: Valor de un String o el UTF-8, sus equivalentes en Binario, Octal, Decimal, Hexadecimal y una breve descripción.
La tabla la saque de aqui: https://www.sciencebuddies.org/science-fair-projects/references/table-of-8-bit-ascii-character-codes
Lo interesante de todo sera usar el Scrapping de python con BeutifullSoup para extraer una estructura de Lista, luego esta lista puede traer errores así que la filtramos a listas de Python, y luego la pasamos a un diccionario para tener una llave y un valor de esta manera por ejemplo:
dictionary_unicode = {"A": ['065', '101', '041', '0100 0001']}
Donde al llamar a:
dictionary_unicode['A'][0]
dará como resultado065
que no es mas que la parte decimal de "A" si queremos la parte binaria seria asidictionary_unicode['A'][3]
Aquí tenemos el primer código iré comentándolo que vamos haciendo entre códigos incluso puede q repita la clase por que como STEEMIT no tiene una buena forma de hacer series es mejor repetirlas, refrescar mejorar y agregar..
# -*- coding: utf-8 -*-
import urllib2
from bs4 import BeautifulSoup
import re
from prettytable import PrettyTable
import os, subprocess
url_unicode = "https://www.sciencebuddies.org/science-fair-projects/references/table-of-8-bit-ascii-character-codes"
page = urllib2.urlopen(url_unicode)
soup = BeautifulSoup(page, "lxml")
name_box = soup.find('div', attrs={'class': 'content-table page-break-avoid'})
name_boxaaa = soup.find('table')
table_headers = name_boxaaa.find_all('tr')
A ver vamos a entender un poco el código, en esta primera entrada llegaremos a mandar la lista a un archivo esto para que cuando ya tengamos la lista no tengamos que descargarla de nuevo :D
import urllib2
Esta librería es para importar urls completas o mejor dicho lo que tienen dentro de esa url.
from bs4 import BeautifulSoup
importamos BeautifulSoup desde la librería bs4 para manejar mejor la Sopa del Html que necesitamos extraer o XML.
import re
re es Expresiones regulare como dicen los Pro es un mundo aparte de programación, que todo programador ya sea de Java, Python o los que sea debería conocer.
import os, subprocess
Estas son librerías que solo funcionaran en Sistemas Linux según entiendo nunca las he usado en Windows...
Ahora se viene lo bueno:
url_unicode = "https://www.sciencebuddies.org/science-fair-projects/references/table-of-8-bit-ascii-character-codes"
page = urllib2.urlopen(url_unicode)
aqui abrimos la url con urllib2, hacemos un request por decirlo mejor.
soup = BeautifulSoup(page, "lxml")
Ya luego la pasamos a un formato mas legible por si algun programador no hizo su trabajo y lo ponemos en XML o una estructura mas amigable, si quiere saber de que hablo coloque un print page
Antes de soup.
Ahora necesitamos extraer la tabla que necesitamos lo hacemos asi:
name_box = soup.find('div', attrs={'class': 'content-table page-break-avoid'})
La clase content-table page-break-avoid
es la que contiene la tabla que necesitamos recuerden que podríamos tener muchas tablas y div es donde se encuentra esa clase.
name_boxaaa = soup.find('table')
Luego ya tenemos todo mas compacto, te invito a meter un print name_box
antes de name_boxaaa
en la linea anterior buscamos con find la etiqueta table.
table_headers = name_boxaaa.find_all('tr')
Ahora buscamos las etiqueta ""tr"" y aprovechamos BeautifullSoup y usamos el find_all propio de las expresiones regulares para crear una lista de cada "tr", esta lista necesitamos enviarla a un archivo para no tener que descargarla siempre.
Ahora mismo la tenemos en una lista todos los "tr" pero necesitamos leerla mucho y no deberíamos tener que conectarnos a Internet siempre.
lo hacemos así:
crear_LISTA_unicode = subprocess.call("touch lista_en.txt", shell=True)
Aqui usamos subprocess.call
para ejecutar comandos de Linux desde Python.
f=open("lista_en.txt","w")
Abrimos el Archivo anteriormente creado.
f.write(lista_unicode)
escribimos la lista que hemos descargado "lista_unicode"
f.close()
Y cerramos si queremos ver la lista simplemente colocamos un print lista_unicode
al terminar.
En la Próxima sesión estaremos viendo como leer la lista desde el Archivo y pasarla a un Diccionario del tipo que comente al principio, nos vemos hasta la próxima.
Seth gueko 😉
thx :D
Buenas tardes @sethroot
Un idioma complejo y desconocido para mí el de la programación pero no por ello carente de mucho mérito.
Que bueno que te haya gustado muchas gracias!!!