[Python] Hilo general

Merkury

#329 Tienes un MP

1 1 respuesta
tokkara

#331

¿Es posible que reciba el mismo MP?

1 respuesta
Merkury

#332 Es posible, es posible.

B

Hola buenas!

Estoy intentado crearme un csv gigante para practicar machine learning y crear un predictor de apuestas para los combates de la ufc.

He creado dos funciones que me permiten extraer información de los perfiles de los luchadores de www.sherdog.com. Uno para la información biográfica y otro para la información referente a sus peleas.

El problema me viene a la hora de pasar todos estos parámetros a un .csv donde pueda empezar a agregar todos los luchadores del sitio. He probado con open('ufc.csv', 'w') pero no me funciona.

Alguien puede echarme una mano? Pego ambas funciones, primero la que consigue informacion de la bio y despues la que consigue información de los records.

def scrapping_sherdog_bios(url):
    user_agent = {'User-agent': 'Mozilla/5.0'}
    peticion_url = requests.get(url, headers = user_agent)
    if peticion_url.status_code != 200:
        print("Se ha producido un error")
    else:
        codigo_fuente = peticion_url.text
        bs_url = bs(codigo_fuente, 'html.parser')
        name = bs_url.find('span', class_='fn').get_text(' ')
        born = bs_url.find('span', itemprop = 'birthDate').get_text(' ')
        age = bs_url.find('strong').get_text(' ')
        birth_place = bs_url.find('span', itemprop = 'address').get_text(' ')
        nationality = bs_url.find('strong', itemprop = 'nationality').get_text(' ')
        height = bs_url.find('span', class_='item height').get_text(' ')
        weight = bs_url.find('span', class_='item weight').get_text(' ')
        association = bs_url.find('h5', class_='item association').get_text(' ')
        division = bs_url.find('h6', class_='item wclass').get_text(' ')
        
fight_summary = bs_url.find_all('span', class_= 'counter') fight_results = bs_url.find_all('span', class_='graph_tag') wins = fight_summary[0].get_text(' ') ko_tko = fight_results[0].get_text(' ') submissions = fight_results[1].get_text(' ') decissions = fight_results[2].get_text(' ') losses = fight_summary[1].get_text(' ') ko_tkoed = fight_results[3].get_text(' ') submitted = fight_results[4].get_text(' ') decided = fight_results[5].get_text(' ') print(name, born, age, birth_place, nationality, height, weight, association, division, wins, ko_tko, submissions, decissions, losses, ko_tkoed, submitted, decided)
results = []
oponent = []
event = []
method = []
Round = []
time = []

def scrapping_sherdog_records(url):
    user_agent = {'User-agent': 'Mozilla/5.0'}
    peticion_url = requests.get(url, headers = user_agent)
    codigo_fuente = peticion_url.text
    bs_url = bs(codigo_fuente, 'html.parser')
    with open('output.csv', 'w') as f:
        for tr in bs_url.find_all('tr'):  
tds = tr.find_all('td') if len(tds) == 6: results.append(tds[0].text) oponent.append(tds[1].text) event.append(tds[2].text) method.append(tds[3].text) Round.append(tds[4].text) time.append(tds[5].text)
2 respuestas
Vashealer

#334 no estaría de más que pusieras el error que te sale :ninjaedit:

igualmente prueba a abrirlo con el universal newline mode y se lo pasas al csv.reader

with open(f, 'rU') as csvfile:
    csvreader = csv.reader(csvfile)
    for row in csvreader:
        print ', '.join(row)
MartiONE

#334 Donde exactamente guardas los parametros al csv? No veo que en ninguna linea lo escribas.

Y luego, copianos el error que te sale a ver :)

boqueron

Dudilla, para realizar ventanas con botones etc.. vamos un interface gráfico de toda la vida, ¿que recomendáis?.

He visto que existe TKinter y wxPython. Alguien me recomienda otra librería o con estas vamos bien.

Y otra pregunta, tengo que dibujar un humanoide en 3 dimensiones, que se pueda mover las partes y demás. ¿Existe una librería que me pueda valer?. He mirado PyOpenGL. ¿Alguna otra idea?.

Gracias.

2 respuestas
Vashealer

#337 https://github.com/vinta/awesome-python#gui

1 1 respuesta
boqueron

#338 Muchísimas gracias, gran índice xD

mortadelegle

#337 Yo estoy haciendo mi TFG con Kivy, cuando llevemos algo más te puedo contar

1 respuesta
boqueron

#340 Gracias, estuve mirando ayer y opte por usar Panda3D porque tenia muy buena pinta, cagada, es para python 2.7 y yo necesito que sea para python 3.X, así que me tocara seguir investigando.

También es para mi TFG

1 respuesta
Kaiserlau

#341 si lo necesitas para desktop usa tkinter, queda un poco meh visualmente pero es easy y ya lo tienes.

2 respuestas
HeXaN

#342 Un TFG tiene que quedar en condiciones.

1 respuesta
boqueron

He buscado y hay versiones de panda3D SDK para python 3.4 , mañana lo probare porque tengo que desintalar el pyton3.4 que tengo instalado y luego bindear las librerias a mano porque no se pueden instalar las de panda con pip.

Cada dia un reto nuevo, oye y aun ni una linea de codigo jajajaj

PD: he visto TKinter y visualmente es una ponzoña, tengo que crear un programa visualmente atractivo, pero gracias por la respuesta #342

2 respuestas
B

#344 no puedes usar PyQt? tiene un editor muy bonito para ahorrarse trabajo

qt designer se llama

1 respuesta
Kaiserlau

#345 pyqt mola pero yo no usaria el designer si no lo has tocado nunca. Tambien con qt puedes usar qml para comportamientos. Pyqt la ultima vez q lo toque tiene buena docu y tambien es cross xD

#344 #343 decia tkinter xq ya se tiene, es cross y es relativaente sencillo. Eso si claro, si tiene q quedar visualmente bonito olvidate xD

1 respuesta
B

#346 si yo aprendi a usarlo mas o menos, cualquiera puede jaja

boqueron

Si realmente lo de menos al final es la ventana de menus etc.. Tengo que crear un robot en 3D que se pueda mover con el usuario segun las articulaciones seleccionadas y se tiene que ver bien. Por tanto realmente el IDE es lo de menos al final, lo que me interesan son las librerias.

Me estoy apuntando todas las sugerencias, y el PyQt tiene pinta de ser facil facil para generarme las ventanas de los menus ,etc...

1 1 respuesta
cabron

Sobre lo de que tkinter es horrible, no lo he usado nunca, pero supuestamente tkinter se puede ver con el mismo tema que tenga el usuario para su escritorio si tiras de esto: https://docs.python.org/3/library/tkinter.ttk.html

1 respuesta
Kaiserlau

#349 si pero ttk es bastante limitado xD Lo he usado para progressbars y meh..

B

#348 es facil. Creas la interfaz que quieras, luegod esde el codigo la cargas asi por ejemplo
window = uic.loadUi("prueba.ui")
y una vez asi para acceder a los elementos pues pones
window.boton(o el elemento que sea, depende del nombre que le hayas dao en el designer)

1 respuesta
boqueron

#351 Si, así pienso hacer los menús, tengo que intentar facilitarme las cosas que ya vendrá lo jodido luego xD

19 días después
Alberteban

¿Alguien me puede hacer un 'Explain like im Five' sobre cómo instalar frameworks? Porque estoy intentando instalarme django y me estoy volviendo loco. Lo he descargado y lo he descomprimido en el mismo directorio que Python, y se supone que para instalarlo tengo que usar este comando:

pip install Django==1.10.4

Lo cual me lleva a este error:

File "<stdin>", line 1
            pip install Django==1.10.4

SyntaxError: invalid syntax

...y no se que hacer ahora xD.

1 respuesta
Amazon

Tienes pip instalado?

1 respuesta
Alberteban

#354 El que viene con Python 3.5 sirve? He estado viendo que me hace falta upgradearlo o algo de eso, lo cual es a través de un comando que tampoco me funciona.

1 respuesta
B

#353

Por cuestiones de los repositorios, versiones etc... He tenido algún problemas y desde hace un tiempo utilizo anaconda, prueba con el, seguro que te evitas problemas futuros.

1 respuesta
HeXaN

#355

sudo apt install python3-pip
pip3 install django

No debería dar error.

1 respuesta
Alberteban

#357 Pues estoy copiando y pegando y me sigue dando syntax error, al final he instalado Django con Anaconda como me ha dicho #356 y lo he comprobado así:

from django import get_version
get_version()

Y me ha dado la versión instalada (1.10), la cosa es que luego intento crear un proyecto con

$ django-admin startproject mysite

Y me da syntax error xD

1 respuesta
cabron

#358

Comprueba que python tienes primero en el path, a ver si estás ejecutando python27 para código de python3 o alguna historia de esas, haz:

which python

A ver que te sale

Aunque lo mejor sería que te hicieses un virtualenv y ahí pones la versión concreta de python que quieras y te dejas de lios

2 respuestas
Kaiserlau

#359 seguro q es lo primero q recomiendan en la docu de django, instalar y configurar un venv y luego django. Es locurote no hacerlo.