Sou iniciante em Python e comecei seguindo um livro da coleção Head First .
No capítulo 3 há um exemplo de um programa que envia uma mensagem a uma conta no Twitter.
O usuário responde Y ou N e dependendo da resposta uma ação é tomada.
Caso Y, o programa busca um valor no site( valor do grão de café ) e manda uma mensagem imediatamente para o Twitter.
Caso N, o programa acessa o site a cada 15 minutos e mostrará uma mensagem apenas quando o valor do grão for menor que $4.74. Eles mostram uma imagem de uma
conta no Twitter que recebeu a mensagem sobre o valor do café. Porém comigo tem apresentado os erros abaixo.
Além destes erros, por mais que eu digite Y o programa nunca entra no if. Vai direto para o else. Não entendo porque.
Este é o código com os erros logo abaixo.
def get_price():
page = urllib.request.urlopen("http://beans.itcarlow.ie/prices-loyalty.html")
text = page.read().decode("utf8")
where = text.find('>$')
start_of_price = where + 2
end_of_price = start_of_price + 4
return float(text[start_of_price:end_of_price])
def send_to_twitter():
msg = "I am a message that will be sent to Twitter"
password_manager = urllib.request.HTTPPasswordMgr()
password_manager.add_password("Twitter API",
"http://twitter.com/statuses", "ARGInforma", "doe099do106")
http_handler = urllib.request.HTTPBasicAuthHandler(password_manager)
page_opener = urllib.request.build_opener(http_handler)
urllib.request.install_opener(page_opener)
params = urllib.parse.urlencode({'status':msg})
resp = urllib.request.urlopen("http://twitter.com/statuses/update.json" , params)
( apresenta erro nesta linha )
resp.read()
price_now = input("Digite Y/N ")
if price_now == "Y":
send_to_twitter()
else:
current_price = 99.99
while current_price > 4.74:
#time.sleep(900)
current_price = get_price()
send_to_twitter()
Na hora de postar está sem a identação. Mas o código está identado exatamente como no livro.
Traceback (most recent call last):
File "E:\Java\Head_Python\src\Chapter_03\get_price_twitter.py", line 39, in <module>
send_to_twitter()
File "E:\Java\Head_Python\src\Chapter_03\get_price_twitter.py", line 28, in send_to_twitter
resp = urllib.request.urlopen("http://twitter.com/statuses/update.json" ,"none", params)
File "C:\Python32\lib\urllib\request.py", line 138, in urlopen
return opener.open(url, data, timeout)
File "C:\Python32\lib\urllib\request.py", line 364, in open
req = meth(req)
File "C:\Python32\lib\urllib\request.py", line 1052, in do_request_
raise TypeError("POST data should be bytes"
TypeError: POST data should be bytes or an iterable of bytes. It cannot be str.
Pergunta
Andre Paiva
Sou iniciante em Python e comecei seguindo um livro da coleção Head First .
No capítulo 3 há um exemplo de um programa que envia uma mensagem a uma conta no Twitter.
O usuário responde Y ou N e dependendo da resposta uma ação é tomada.
Caso Y, o programa busca um valor no site( valor do grão de café ) e manda uma mensagem imediatamente para o Twitter.
Caso N, o programa acessa o site a cada 15 minutos e mostrará uma mensagem apenas quando o valor do grão for menor que $4.74. Eles mostram uma imagem de uma
conta no Twitter que recebeu a mensagem sobre o valor do café. Porém comigo tem apresentado os erros abaixo.
Além destes erros, por mais que eu digite Y o programa nunca entra no if. Vai direto para o else. Não entendo porque.
Este é o código com os erros logo abaixo.
Na hora de postar está sem a identação. Mas o código está identado exatamente como no livro.Obrigado pela atenção . Até mais.
Editado por kuroiAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.