[Python] Hilo general

telemaco103

#1017 #1020 Joder, soy retrasado jajaja

Muchas gracias a todos

hda

#1003 pues nada, ya está terminando esto. Ahora pongo los resultados.

print(df.to_markdown())

Ahora a decidir cuál empezar xD

3 4 respuestas
bLaKnI

#1022 Has tenido solamente en cuenta las estrellas por libro? O el numero de votos por los cuales se consiguen dicho numero de estrellas?
Porque no es lo mismo una puntuación de 4 estrellas conseguida entre 3450 votaciones, que una de 5 estrellas conseguida por 3 votaciones.
Y si rizamos el rizo, esté le hecho de el porcentaje de estrellas por votación, que aún siendo un 4 estrellas, si predominan las de 3-3.5 no es lo mismo (que haga media por pocas de 5)... xD

1 1 respuesta
eondev

#1022 no por criticar ni nada pero a mi en la vida se me ocurriría valorar un libro (y más libros randoms de hubble bundle) por una puntuación de randoms xD. Prefiero ver de qué va e ir viendo qué necesito en este momento para escoger XD

3
Phil_Rich

#1022 lo que #1023 viene a decir es que de esa lista empieces por Practical Statistics for Data Scientists

2
B

#1022 jajajaja que raritos somos joder

1
bLaKnI

Pensaba: "hostias, ¿y si me logueo en el Sabadell y me saco pagina por pagina todas las líneas de movimientos de mi cuenta?". Porque sí. Sin más.

Entonces me he puesto con Requests, y mal...
Por 2 motivos:

1) El login del Sabadell es JODIDAMENTE dificil. Viene cargado de 1001 elementos para el payload y para los headers. Y cargar primero la web de presentación de form y parsearla con un BS4 para coger todo lo necesario para el POST... una fumada.
Lo jodido es que lo tenia y entonces...

2) Parte de los campos requeridos no pueden parsearse en el response body, dado que se generan dinamicamente via JS en tiempo de carga. Supongo lo han hecho adrede para evitar scrapping...

Entonces, buscando, doy con un requests con esteroides: https://requests.readthedocs.io/projects/requests-html/en/latest/
Este peque, es capaz de hacer lo mismo, pero permite asincronía y por lo tanto, se supone que precarga o gestiona por debajo todas las llamadas AJAX o scripts que se ejecuten sin problema...
Lo raro, es que a mi no me ha funcionado. Hay muchos <inputs> que se generan por JS directamentre, y el valor de dichos inputs encima, es una llamada a una función... Pues bien, el modulo tira, pero sigo sin tener el HTML en el DOM.

Así que finalmente viene el puto tanque (con la consiguiente perdida de rendimiento masivo): Selenium. xD

Y esto señores, es pura dinamita...

Me ha costado lo suyo configurarlo BIEN! Pero ahora ya está. Ya logueo. Ahora tocara jugar con lo de dentro. Es increible como con 4 linias chorras, consigues lo que consigues...

2 5 respuestas
Isengard

#1027 Igual digo una absurdez... pero ¿por qué necesitas hacer todo eso? Al final imagino que el login del sabadell será una petición POST a un servicio y a partir de ahí ya estás dentro... porque no miras en la consola de devops del navegador justo cuando das a login la llamada que es y miras lo que mandas y lo reproduces luego en Python y listo...

No sé igual es una absurdez pero vaya que ahora las webs se montan así hay servicios y estáticos... si te quedas solo con los servicios haces todo...

1 respuesta
bLaKnI

#1028 Joder... no me has leído por lo que veo... xD

1 respuesta
Isengard

#1029 hostia tú te juro que las imagenes y lo del final no me cargó en su momento y leí hasta lo ya loguo y pensé joder que lío se ha hecho...

1 1 respuesta
bLaKnI

#1030 Es que me has dejado con el culo tuerto... Pensaba: o no me ha leído, o no tiene ni puta idea... O me he explicado fatal! xD

El caso es que el POST del formulario de login del Sabadell, es la hostia de completo. Y la mayoria de campos son dinámicos, con lo que no puedes hardcodearlos, así que te toca cargar primero la web de entrada, parsearla, coger campos y valores y luego, hacer el POST al servicio de login con los payloads y headers pertinentes. Hasta aquí nada raro y todo OK.

El problema, es que los cabrones, han generado html <inputs> en tiempo de carga con JS. Y encima, lo hacen en plan:

Lo cual es la hostia... Ya sabes: ver codigo fuente y no hay nada. Inspeccionar con F12, y lo ves. Un clasico. Y en este caso, una cerdada en Do Mayor Séptima...

Pues Requests, recoge el código de "ver codigo fuente de la pagina", por lo que no tiene nada generado en tiempo de carga via script. Y entonces, nos quedamos sin POST a la clásica...
De ahí la fumada del Selenium.

HeXaN

Al menos 2020 no es todo malo y muchos estáis descubriendo Python. Me alegra.

B

#1027 no sabes la de tiempo que estuve para logearme en una web hace un par de años y al final no lo conseguí. Gracias por compartir estas cosas, algunos aprendemos.

1 respuesta
aIvans

#1033 Selenium va super bien para eso, con apenas 3 líneas lo puedes hacer.

1 1 respuesta
B

#1034 ahora tengo ganas de hacer este tipo de cosas y en cambio me espera un día de apagafuegos en el curro...

Pizzelio

Una dudilla:

Tengo una relación de herencia y en un método de la clase padre llamo a un método que está definido en las clases hija. El programa funciona bien pero el vscode se queja y lo marca como un error diciendo que no sabe qué método es ese y que la clase padre no tiene acceso.

Está literalmente copiado de un ejemplo de un libro así que no sé si es un bug del vscode o qué tengo que hacer para que no lo marque como error.

1 respuesta
B

#1036 ¿qué linter tienes seleccionado? eso me pasaba con pylint y ahora uso pylama, mucho mejor en mi opinión y ya no me marca esas chorradas

2 respuestas
Pizzelio

#1037 Buena pregunta, voy a ver jajaja

Edit: Efectivamente era pylint aunque me da error al instalar pylama y aunque desactive el linting sigue marcando eso como error. Voy a ver...

Edit2: Con pylama me sigue marcando ese error también :(

1 respuesta
eondev

#1037 #1038 Yo uso pycharm, a años luz en inspección de código xD

Probad con esto https://devblogs.microsoft.com/python/announcing-pylance-fast-feature-rich-language-support-for-python-in-visual-studio-code/

1 1 respuesta
B

#1039 totalmente de acuerdo con lo de pycharm, pero en el curro estoy todo el día con el vs code y ya lo tengo tuneado, además aprendí a usar wsl con el vs code y me manejo bien, vamos que es más por pereza de cambiar de entorno que por otra cosa, y ojo, que el vs code no va mal, tengo dos aplicaciones en django desarrolladas íntegramente con vs code y bastante bien

Pizzelio

Ná pues me lo sigue marcando igual, incluso desactivando el linter.

No tendré que declararlo como abstracto o algo así?

1 respuesta
eondev

#1041 No te ralles, es cosa del linter, si te funciona está bien. Prueba Pycharm, en serio, estas cosas no te pasan XD

2 respuestas
Pizzelio

#1042 Voy a bajarlo a ver xD

B

#1042 mira si soy desgraciao que hasta tengo instalada la versión pro-gamer

Fyn4r

Pero vas a cambiar de IDE por algo que probablemente sea fallo tuyo? xD

1 respuesta
B

Cambiando de tema, tengo 7k $ de crédito en AWS que me caducan en junio de 2021 ¿se os ocurre algo guapo?

2 respuestas
eondev

#1045 por qué va a ser fallo suyo si funciona y python no se queja? Será por cosas que no detecta el linter xD
El de pycharm directamente es magia negra, funciona espectacular

Fyn4r

si funciona y python no se queja

Cabrón que esto se da la primera semana de clase

1 respuesta
eondev

#1048 estamos hablando de herencia y de que se usa, y que el linter no es capaz de encontrar la referencia a esa clase, no de que sea un error sintáctico que se detecte en tiempo de ejecución xD

Kaiserlau

#1046 descargar porno como un pro