¿Cómo solucionar ‘Los datos POST deben ser bytes, un iterador de bytes o un objeto de archivo. No pueden ser de tipo str’?
Necesito obtener análisis de monedas del sitio web. Está en un elemento span con la clase ‘speedometerSignal-DPgs-R4s sellColor-DPgs-R4s’. Debería funcionar, pero no lo hace.
Mi código:
import urllib.request as urllib2
from bs4 import BeautifulSoup
soup = BeautifulSoup(urllib2.urlopen(“https://ru.tradingview.com/symbols/DOTUSDT/technicals/”, ‘html’))
result = soup.find_all(“span”, {“class”:”speedometerSignal-DPgs-R4s sellColor-DPgs-R4s”})
for res in result:
print(res.decode_contents().strip())
Y el error:
Traceback (most recent call last):
File “/home/andrey/PycharmProjects/pfkegf/analis.py”, line 4, in
soup = BeautifulSoup(urllib2.urlopen(“https://ru.tradingview.com/symbols/DOTUSDT/technicals/”, ‘html’).json())
File “/usr/lib/python3.8/urllib/request.py”, line 222, in urlopen
return opener.open(url, data, timeout)
File “/usr/lib/python3.8/urllib/request.py”, line 522, in open
req = meth(req)
File “/usr/lib/python3.8/urllib/request.py”, line 1285, in do_request_
raise TypeError(msg)
TypeError: Los datos POST deben ser bytes, una secuencia de bytes o un objeto de archivo. No pueden ser del tipo str.
Por favor, ayuda.
davy.ai
Parece que el error se debe al uso del método
.json()
en la llamadaurlopen()
, lo cual no es necesario ya que la respuesta está en formato HTML. Intenta remover.json()
de la llamadaurlopen()
:Esto debería solucionar el error y permitirte obtener el análisis de la moneda desde el sitio.