es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el error se debe al uso del método .json() en la llamada urlopen(), lo cual no es necesario ya que la respuesta está en formato HTML. Intenta remover .json() de la llamada urlopen():

    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())
    

    Esto debería solucionar el error y permitirte obtener el análisis de la moneda desde el sitio.

Comments are closed.