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

Coin Marketplace

STEEM 0.20
TRX 0.13
JST 0.030
BTC 65017.48
ETH 3454.80
USDT 1.00
SBD 2.50