Código Python:
Ver original
import urllib.request import time password="yourpass" def send_to_twitter(msg): password_manager = urllib.request.HTTPPasswordMgr() password_manager.add_password("Twitter API", "http://twitter.com/statuses", "YourUsername", password) 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) resp.read() def get_price(): page = urllib.request.urlopen("http://www.beans-r-us.biz/prices.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]) price_now = input("Do you want to see the price now (Y/N)? ") if price_now == "Y": send_to_twitter(get_price()) else: price = 99.99 while price > 4.74: time.sleep(900) price = get_price() send_to_twitter("Buy!")
y aqui el error que me muestra el interprete
Traceback (most recent call last):
File "C:\Users\Marino\Documents\Pycode\hfprog_resources \Chapter 3\page108.py", line 28, in <module>
send_to_twitter(get_price())
File "C:\Users\Marino\Documents\Pycode\hfprog_resources \Chapter 3\page108.py", line 14, in send_to_twitter
resp = urllib.request.urlopen("http://twitter.com/statuses/update.json", 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.