SCRAPPING con Python extrayendo Unicode para Criptografia!!! [Mini Curso Python]steemCreated with Sketch.

in #spanish7 years ago

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 resultado 065 que no es mas que la parte decimal de "A" si queremos la parte binaria seria asi dictionary_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.



Sort:  

Seth gueko 😉

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!!!