[Python] Hilo general

refresco

#1830 justo es pa la página que estoy haciendo jajaja. No hay manera

1 respuesta
eondev

#1830 #1831 pues yo idealista la scrapee en su dia de arriba a abajo. Bueno, de hecho scrapee todos los portales web españoles de inmobiliarias y segunda mano

hda

Yo también escrapeé en su momento el idealista porque quería analizar Valencia, ya que me iba por seis meses a vivir allá.
-> https://www.mediavida.com/foro/off-topic/mudanza-valencia-barrios-ver-cuales-evitar-683765/2#52

Pero, claro, igual ahora han metido una capa para intentar bloquear el scrapeo.

Dr_Manhattan

Usa https://www.scraperapi.com/ es de pago, pero con la versión de prueba se pueden hacer bastantes cosillas, yo la he usado alguna que otra vez para saltarme ese tipo de bloqueos

Leos

Que librería de requests estáis usando?

1 respuesta
refresco

#1835 urllib

1 respuesta
Leos

#1836 El otro dia estuve scrapeando vinted y me di cuenta que con los mismos headers y tal la libreria requests la detectaban como bot, pero aiohttp no, quizás te esta pasando algo parecido.

Kaiserlau

Estáis arrastrando la cookie y el referer de cabecera en cada petición no? daros cuenta que cambia según vais paginando. En la respuesta ademas os da los nuevos seteos etc. Tendréis que ir gestionando esa mierda.

1 respuesta
Leos

#1838 Normalmente estas cosas ya las gestionan las librerias con el cookies jar interno

1 respuesta
Kaiserlau

#1839 con requests tienes que construir específicamente todo eso para gestionarlo a tu modo/casos, incluso usando la session tienes que decirle como gestionar el payload, las cookies, etc si la pagina te esta demandando de la anterior paginacion o lo que sea (requests no puede saber que va a demandar un get). Todo el tema del referer, gestion de cookies, de idealista en concreto y tal tienes que dárselo tu y meterlo al header cada vez que iteras una lista etc. Tienes que simular que estas navegando y no tirando de urls o consultas a pelo xd

1 respuesta
Leos

#1840 Buff entonces es mejor optar por aiohttp que lo gestiona todo solo, ahora ya entiendo porque con requests me pasaba lo que me paso! Thanks, no me dio ni por mirar si estaba trasladando esas cosas automaticamente.

hda

Acabo de descubrir el operador walrus, incorporado en python 3.8.

Ejemplo:

if (n := len(mi_lista)) > 0:
    print(f"La lista tiene {n} elementos")

Sin el operador walrus, tendríamos que escribir:

n = len(mi_lista)
if n > 0:
    print(f"La lista tiene {n} elementos")

Con el operador walrus podemos simplificar el código y hacerlo más conciso y más legible, ya que claramente indica que n se está asignando el valor de la expresión en su lado derecho.

Bastante interesante. Comparto por si no lo conocíais.

6 1 respuesta
Calzeta

#1842 Me he tirado un buen rato pensando cuál sería la referencia hasta que he caído en que el operador parece una carita de morsa.

4 2 respuestas
hda

#1843 porque lo has dicho, sino no me hubiese fijado XD

1 respuesta
CaNaRy_r00lz

#1843 #1844 Joder es super obvio, pero tambien te digo lo fumados que iban para ver eso asi de repente xD aunque bueno yo con este => siempre pienso que es una espada xD

1

Usuarios habituales