Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

349
Views
Verifique la cadena en "response.content" generando "TypeError: se requiere un objeto similar a bytes, no 'str'"

Estoy tratando de ver si una oración está presente en la respuesta de una solicitud.

 import requests r = requests.get('https://www.eventbrite.co.uk/o/piers-test-16613670281') text = 'Sorry, there are no upcoming events' if text in r.content: print('No Upcoming Events')

Estoy teniendo el siguiente error:

 TypeError: a bytes-like object is required, not 'str'

No estoy muy seguro de por qué ocurre esto y cuál sería la solución.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

r.content es un objeto de bytes pero text es str , por lo que no puede hacer la __contains__ ( in ) en otro directamente.

Puede (re)definir fácilmente el objeto de text para que sea una cadena de bytes:

 text = b'Sorry, there are no upcoming events'

Ahora, puede hacer if text in r.content: .

o puede usar r.text para obtener la representación de str directamente y usar el text tal cual (como str ).

over 4 years ago · Santiago Trujillo Report

0

r.content devuelve un objeto similar a bytes en Python 3.x. Para verificar, haga:

 >>> type(r.content) <class 'bytes'>

Hay varias formas de solucionar su problema. Por ejemplo:

  1. Decodificar r.content a cadena : puede decode a cadena como:

     >>> text in r.content.decode() False
  2. Convierta r.content a cadena utf-8 como:

     >>> text in str(r.content, 'utf-8') False
  3. Defina su text para buscar como una cadena de bytes . Por ejemplo:

     text = b'Sorry, there are no upcoming events' # ^ note the `b` here

    Ahora puede simplemente usarlo con r.content como:

     >>> text in r.content False
  4. Use r.text en lugar de r.content para buscar la cadena, que como sugiere el documento :

    La codificación de texto adivinada por Solicitudes se usa cuando accede a r.text .

    Por lo tanto, puede simplemente hacer:

     >>> text in r.text False
over 4 years ago · Santiago Trujillo Report

0

Las solicitudes devuelven un objeto de bytes, debe convertirlo en una cadena antes de realizar la entrada

Aquí hay una referencia sobre tipos integrados, uno de los cuales es bytes https://docs.python.org/3/library/stdtypes.html

la línea de código que estás buscando es algo así como,

 if text in r.content.decode(): print('No upcoming events')

por defecto, la decodificación asume utf-8, aunque puede pasar una codificación diferente si lo necesita.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!