Ciclos en la programación, Scraping WEB con Python

Que tal espero se encuentren muy bien y esta semana se encuentren listos para aprender más de programación, decimos que en la vida hay ciclos, bueno pues en la programación también y cada ciclo se detiene hasta cumplir una condición igual que en la vida, si no haces las cosas diferentes seguirás en un  mismo ciclo.

¿que es un ciclo definido en programación?

En programación hay varias instrucciones en cada lenguaje para crear ciclos, bucles o iteraciones por ejemplo:

  • FOR
  • WHILE
  • DO
  • REPEAT
  • UNTIL

Vamos a explicar un poco más imaginen que van a su restaurante favorito y les dan unas tarjetas de lealtad y cada visita les van a dar un sello cuando cumplan 5 sellos les dan un 50% de descuento. Bueno es un ciclo vamos a verlo en instrucciones de seudocodigo

Mientras i < 5 entonces
  i = i + 1  /*aquí le decimos que i es la variable para ir contando las visitas*/
  Si i == 5 entonces /*validamos en que numero vamos*/
   "50% de descuento"
salida

Aquí se detiene el ciclo cuando i llega a 5 , cada vez que se entra al ciclo se llama iteración 

Hay veces que si hacemos mal nuestras condiciones o no entramos a los ciclos o se quedan siempre dentro del mismo ciclo a menos que tengas un propósito de prueba de algún sistema o que quieras medir la memoria o algo que lo justifique debe utilizarlos, por ejemplo un While(1) 


Otro ejemplo de un bucle es un número exponencial, porque le decimos multiplica un número hasta el exponente x

x³   donde x sea 7 , entonces en seudocódigo es:

x= 7
i=1
exp = 1
Mientras i  <= 3 entonces
  exp = exp * x
  i = 1 + 1
muestra exp.

Corrida a mano (esto es cuando tu en un papel o en tu cabeza o un archivo sigues la lógica de tu programa) 


Iteraciónn       x         i           exp
1 7 1 7
2 7 2 49
3 7 3 343

Un ejemplo en la vida de un programador, cuando necesitas realizar cálculos para aseguradoras o estimaciones de Actuarios. Hay otro ejemplo en matemáticas que es la sumatoria su símbolo es Σ y se expresa así:
funciones matematicas


Sumatoria es cuando vamos almacenando un valor por ejemplo la suma total del valor de inventario, la venta en un software de punto de venta (en un restaurante).  

Tenemos otros tipos de ciclos que se llaman recursivos que consiste en que se ejecuta el mismo ciclo dentro de él mismo, suena super loco y lo és, un ejemplo en matemáticas es un factorial, en lo profesional lo he utilizado en tabla abs_mstr y ps_mstr del ERP de QAD .

Otro ejemplo son las series de Fibonacci, fractales que son más enfocados a investigaciones o cálculos de graficación.
Todos estos casos son Funciones matemáticas .



Hay una instrucción que sirve para salir del ciclo si se llega a cumplir una condición, recuerden que nuestros programas siempre cumplen condiciones y realizan acciones en base a ellas, las instrucciones son:



BREAK

QUIT
LEAVE



Esta es otra forma de romper un ciclo o cumpliendo la condición inicial del ciclo o romperla con otra condición, ojala fuera así de fácil en nuestras vidas (o quizás si es así pero no lo vemos) .



Veamos un ejemplo en Python que fue un ejercicio en mi curso de Python for everybody en Coursera , el programa debe ingresar a una pagina WEB leer en pantalla que línea de la página se va a buscar y como tercer parámetro cuantas veces se va a entrar a buscar la página, es decir vamos a ir adentrándonos a las ligas de una página, digamos es como ir al explorador de archivos en nuestra computadora 


# To run this, you can install BeautifulSoup
# https://pypi.python.org/pypi/beautifulsoup4

import re
import urllib
from bs4 import BeautifulSoup
import ssl
var = ""


def recorrer1(link,counta,contados):
    html = urllib.urlopen(link).read()
    soup = BeautifulSoup(html, "html.parser")
    tags = soup('a')
    c1 = 1
    c2 = 1
    for tag in tags:
        if c1 == counta:
           #print(tag.get('href', None))
            html2 = urllib.urlopen(tag.get('href', None)).read()
            soup2 = BeautifulSoup(html2, "html.parser")
            return tag.get('href', None) 
        c1 = c1 + 1

# Ignore SSL certificate errors
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
url = raw_input('Enter URL: ')
cont2 = int(raw_input('Enter count: '))
cont1 = int(raw_input('Enter position: '))
count3 = 1
# Retrieve all of the anchor tags
#url = 'http://py4e-data.dr-chuck.net/known_by_Fikret.html'
print "Retrieving: ",url
var = recorrer1(url,cont1,cont2)
print "Retrieving: ",var
while count3 < cont2 :
   print "Retrieving: ", recorrer1(var,cont1,cont2)
   var = recorrer1(var,cont1,cont2)
   count3 = count3 + 1


ejecución


BeautifulSoup

scraping web

La primera página, busca la línea 10 y así continua entrando a las páginas hasta que llega al contador 5


Este ejemplo que vimos o esta técnica se llama scraping web que normalmente es simular la navegación de un sitio por una persona, esta técnica es utilizada por los buscadores de páginas WEB.

Espero les haya gustado este post a mi en lo personal me gusto mucho, porque dicen que uno puede decir que sabe algo hasta que puede explicarlo. Gracias por leer el blog y compartirlo.

Comentarios

Entradas más populares de este blog

Ejemplo Macro en Word

Macro de Excel para abrir archivo csv

Como ejecutar SQL desde Tareas Programadas de Windows