Revisão Strings¶
Texto¶
É difícil comunicar-se sem palavras
Entre os vários tipos de dados, um dos mais importantes é o texto ou string
Obs.: não é tão fácil manipular strings em algumas linguagens
Vamos procurar onde estão as informações num texto == scraping
E iremos aprender um dos conceitos mais importantes de orientação à objetos: métodos
Starbuzz Café¶
Código Starbuzz atual¶
import urrlib.request
pagina = urllib.request('http://beans.itcarlow.ie/prices.html')
texto = pagina.read().decode('utf8')
print(texto)
O preço está embutido no HTML¶
Este é um texto HTML “bruto”, que é o formato das páginas Web
O preço está embutido no HTML
Strings¶
Fatiamento¶
Fatiamento¶
import urrlib.request
pagina = urllib.request('http://beans.itcarlow.ie/prices.html')
texto = pagina.read().decode('utf8')
print(texto[234:238])
Não existem perguntas idiotas¶
Posso colocar qualquer página web neste código?
Sim. Fique à vontade, mas não esqueça o decode
Por exemplo, o site abaixo usa iso8859
O que urllib.request faz?
Permite conversar com a internet
Posso acessar uma página diretamente no navegador?
Sim. Digite no modo interativo “import antigravity”
Programa de fidelidade¶
import urrlib.request
pagina = urllib.request('http://beans.itcarlow.ie/prices-loyalty.html')
texto = pagina.read().decode('utf8')
print(texto[234:238])
Não deu certo! Apareceu “bean” no lugar do preço. Por quê será?
Os dados do Python são espertos¶
As linguagens de programação fornecem uma funcionalidade embutida nos dados para ajudá-lo
Os dados do Python são espertos: eles podem fazer coisas
Método find¶
Métodos find para strings
Para saber os métodos que possuo dar ctrl + espaço após ponto
Método find¶
import urrlib.request
pagina = urllib.request('http://beans.itcarlow.ie/prices-loyalty.html')
texto = pagina.read().decode('utf8')
onde = texto.find('>$')
inicio = onde + 2
fim = inicio + 4
print(texto[inicio:fim])
Só quando for menos que 4.74¶
import urrlib.request
pagina = urllib.request('http://beans.itcarlow.ie/prices-loyalty.html')
texto = pagina.read().decode('utf8')
onde = texto.find('>$')
inicio = onde + 2
fim = inicio + 4
if texto[inicio:fim] < 4.74:
print(texto[inicio:fim])
Strings são diferentes de números¶
Convertendo para float¶
import urrlib.request
pagina = urllib.request('http://beans.itcarlow.ie/prices-loyalty.html')
texto = pagina.read().decode('utf8')
onde = texto.find('>$')
inicio = onde + 2
fim = inicio + 4
if float(texto[inicio:fim]) < 4.74:
print('Comprar! float(texto[inicio:fim]): %5.2f' %float(texto[inicio:fim]))
Ele pode ficar testando o preço?¶
Ele pode ficar tentando?¶
import urrlib.request
preco = 99.99
while preco >= 4.74:
pagina = urllib.request('http://beans.itcarlow.ie/prices-loyalty.html')
texto = pagina.read().decode('utf8')
onde = texto.find('>$')
inicio = onde + 2
fim = inicio + 4
preco = float(texto[inicio:fim])
print('Comprar! preco: %5.2f' %preco)
O CEO está muito feliz!¶
Aconteceu algum problema¶
Recebemos uma mensagem¶
Biblioteca time¶
Hora atual em segundos time.clock()
Estou no horário de verão? time.daylight()
Dormir alguns segundos time.sleep(secs)
Fuso horário time.timezone()
10 minutos entre cada acesso¶
import urrlib.request
import time
preco = 99.99
while preco >= 4.74:
pagina = urllib.request('http://beans.itcarlow.ie/prices-loyalty.html')
texto = pagina.read().decode('utf8')
onde = texto.find('>$')
inicio = onde + 2
fim = inicio + 4
preco = float(texto[inicio:fim])
if preco >= 4.74:
time.sleep(600)
print('Comprar! preco: %5.2f' %preco)
Resumo¶
Strings são seqüências de caracteres
Acessamos os caracteres individuais pelo índice, que começa com zero
Métodos são funções embutidas nas variáveis
Existem bibliotecas de programação com código pronto
Os dados possuem um tipo, como int ou string
Ferramentas Python¶
texto[4] acessa o 5º caracter
texto[4:9] acessa do 5º ao 9º caracter
O método texto.find() procura um substring
float() converte algo para ponto flutuante
Bibliotecas: urllib.request e time