Duda con este programa de python

Iniciado por T-Bon3, Abril 24, 2017, 10:30:39 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Abril 24, 2017, 10:30:39 PM Ultima modificación: Abril 24, 2017, 11:39:06 PM por xyz
Hola comunidad, tengo una duda con este programa, todo iba bien pero a la hora de extraer el valor del dolar no me hace caso.
Anexo el codigo:

Código: php

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#-----------------------------------------------------------------------------
# Incluimos los módulos necesarios.
#-----------------------------------------------------------------------------
from urllib2 import urlopen
from BeautifulSoup import BeautifulSoup
import time

# Obtiene el título de una página web.
def obtener_hora():

    return time.strftime("%H:%M:%S")
def obtener_fecha():

    return time.strftime("%d/%m/%y")

# Cuenta las etiquetas divs que aparecen en una página web.
def contar_divs(url):

    # Descargamos la información de la página.
    soup = BeautifulSoup(urlopen(url))

    # Buscar valor.
    divs = 0
   [color=red]#AQUI ES DONDE NO ME HACE CASO Y LO EDITE PARA VER SI REALMENTE ME ESTA BUSCANDO ESA LINEA[/color]
for div in soup.findAll("strong"):       
divs += 1


    return divs


# El usuario escribe la url
url = "http://www.eldolar.info/es-MX/mexico/dia/hoy"

# Mostramos la información obtenida.
print obtener_fecha() + ' '+obtener_hora()+' '+str(contar_divs(url))

Creo que era problema de sangría lo corregí así y lo ejecute y ya solo me marca error de la librería por que no la tengo instalada.
Checa lo y me dices!!

Código: python
#!/usr/bin/env python
# -*- coding: utf-8 -*-

#-----------------------------------------------------------------------------
# Incluimos los módulos necesarios.
#-----------------------------------------------------------------------------
from urllib2 import urlopen
from BeautifulSoup4 import BeautifulSoup
import time

# Obtiene el título de una página web.
def obtener_hora():

    return time.strftime("%H:%M:%S")
def obtener_fecha():

    return time.strftime("%d/%m/%y")

# Cuenta las etiquetas divs que aparecen en una página web.
def contar_divs(url):

    # Descargamos la información de la página.
    soup = BeautifulSoup(urlopen(url))

    # Buscar valor.
    divs = 0
    #[color=red]#AQUI ES DONDE NO ME HACE CASO Y LO EDITE PARA VER SI REALMENTE ME ESTA BUSCANDO ESA LINEA[/color]
    for div in soup.findAll("strong"):       
        divs += 1


    return divs


# El usuario escribe la url
url = "http://www.eldolar.info/es-MX/mexico/dia/hoy"

# Mostramos la información obtenida.
print obtener_fecha() + ' '+obtener_hora()+' '+str(contar_divs(url))

Abril 25, 2017, 05:11:45 AM #2 Ultima modificación: Abril 25, 2017, 05:13:29 AM por linuxmeister
Yo diría que es un problema de indentación
Citardef contar_divs(url):

    # Descargamos la información de la página.
    soup = BeautifulSoup(urlopen(url))

    # Buscar valor.
    divs = 0
   #AQUI ES DONDE NO ME HACE CASO Y LO EDITE PARA VER SI REALMENTE ME ESTA BUSCANDO ESA LINEA
for div in soup.findAll("strong"):       
divs += 1


    return divs

Por lo que veo después del for no dejas el sangrado para que python reconozca el bloque de código dentro del for, además de que al romper el bloque el return divs tampoco debería de cogerlo. Además de que el propio for no esta indentado a la altura del método contar_divs() por lo que no te lo incluirá dentro.
No obstante si usas un debugger este tipo de problemas se solucionarán de forma rápida y sencilla.
También puede que sea problema del IDE que usas, imagina que antes usabas Notepad++ y lo tenías configurado para tabular, sin embargo ahora te has pasado al Atom y tienes configurado que al tabular te añade x espacios, esto confunde mucho al interprete de python y siempre genera problemas de indentación.
Definirse es limitarse