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í:
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
La primera página, busca la línea 10 y así continua entrando a las páginas hasta que llega al contador 5
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
Publicar un comentario