[Python] Hilo general

R

#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
R

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

9 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
18 días después
R

Una pregunta respecto a pyspark. Tengo un cluster montado con docker Desktop. A la hora de ejecutar un programa para que me haga un reduce de los datos. Da igual en qué nodo me meta para ejecutarlo?

1 respuesta
Dr_Manhattan

#1846 cómo lo ejecutas? lo normal es que crees la sesión de spark apuntando al master del docker.

Para ejecutarlo en docker, no recuerdo bien, pero tenías que hacer algo como un submit a spark utilizando docker excec apuntando a spark-master, entonces el driver ya se encarga de repartir las tareas entre los workers

1 respuesta
R

#1847 me he dado cuenta que no lo estoy haciendo bien.
Tengo un cluster de hsdoop y me idea es usarlo tmb para pyspark.
Instale pyspark en el namenode abría kupyter y me ponía a hacer cosas pero me parecía raro. Además en spark web no veia los datanodes pero en hadoop web si.

Supongo que tendré que instalar pyspark en todos los datanodes y apuntarlos al máster.

A ver si consigo hacerlo

1
R

Vale después de todo el día he conseguido hacerlo funcionar usando spark-submit desde la cterminal. Veo los workers asignados en sparkUI y los jobs completados así que asumo que los está paralelizando.

Ahora bien, hay alguna manera de hacer esto desde pyspark?. Me explico, la idea es ejecutar el código usando jupyter notebook y al ir ejecutando que lo vaya haciendo sin tener que escribir el código y hacer un spark-submit.

Me he dado cuenta que la interfaz de pyspark(la que se accede desde el puerto 4040) no está activada, solo se activa si en la terminal escribo pyspark.

Alomejor me estoy haciendo la picha un lío y no se puede hacer lo que quiero

1 2 respuestas
hda

#1849 qué interesante me parece todo lo que estás haciendo/configurando. Como no es mi caso de uso nunca me he acercado a eso, pero estaría chulo. Nunca he tocado pyspark ni tantas otras cosas.

1 respuesta
R

#1850 es lo que tiene que me aburra en el trabajo xd

1
Dr_Manhattan

#1849 Cuando empecé a aprender Spark, usaba Apache Zeppelin
https://zeppelin.apache.org/

En aquel entonces solo estaba disponible para Scala, pero creo que ya funciona también con python.

Otra cosa que funciona 100% es usar los notebooks de Azure Databricks, ahí puedes usar hasta R si quieres con Spark, creo que tienes unos días de prueba y eso sí se asemeja a un entorno real, tampoco sé lo que pretendes con lo que estás haciendo

1 1 respuesta
R

#1852 ya gaste mis creditos de azure en dios sabe que y databrick no se porque no me deja usar la cuenta esa community que te dejan para trastear.

Mi idea era crear mi propio repositorio de imagenes en docker. Tener mis contenedores creados con hadoop y spark y configurados para arrancarlos con DockerCompose y ponerme a usarlos cada vez que me haga falta sin tener que tocar nada. Tengo ficheros grandes para analizar y por aprender algo nuevo pues decidi hacerlo asi en vez de tirar de pandas.

Luego en un futuro si me aburro mucho pues intentar hacerlo pero con servidores diferentes y no en una misma maquina (si ya me esta costando con una maquina imagina asi xd)

La idea era una vez teniendolo todo ir usando pyspark con jupyter (como databrick) pero parece que voy a tener que tirar de spark-submit

1 3 respuestas
hda

#1853 ¿Por qué no te haces un diario? Me encantaría ir siguiéndolo.

1
Dr_Manhattan

#1853 y tiene que ser en un notebook de jupyter? Quiero decir, yo he usado para un proyecto personal un docker con spark y desde un proyecto en Pycharm podía mandar las tareas al docker de spark, con archivos de datos y tod, tengo ejemplos por si te sirven. Pero nunca lo he intentado con un notebook de jupyter enganchado a un docker, ahí ni idea.

Para transformaciones de datos, en mi opinión mejor spark que pandas y más demandado.

De todas formas, no creo que sea imposible. Mucho ánimo y que te diviertas, parece interesante

1 respuesta
R

#1855 simplemente poque uso vs code y puedo conectarlo al contenedor con jupyter instalao e ir probando el codigo trozo a trozo, por comodidad

Cecos94

#1853 Me interesa mucho lo que estas haciendo, asi que si puedes hacer un diario como te dicen o compartir el repo con todo lo que vas haciendo estaria de lujo.

Yo tengo pendiente aprender docker, pero levantarme un cluster para ejecutar cosillas es algo que siempre tuve como mi primera tarea para hacelro.

1
R

Bueno pues con el correo del trabajo consegui acceder a databricks y puedo trastear cosas.

Para el cluster con esto https://github.com/big-data-europe/docker-spark y la documentacion de la web ya me he conseguio crear mis propias imagenes con lo que me hace falta.

Pero vamos que con ese repo ya sobra

1 1 respuesta
hda

#1854 🙄

Dr_Manhattan

#1858 databricks mola mucho, ahorra un montón de tiempo