Stack Overflow en español Asked by Alan Carlos Lopez on August 26, 2021
Estoy empezando a hacer experimentos con discord.py, pero honestamente no se como empezar en la cuestion de los comandos. El siguiente es el codigo que actualmente estoy utilizando en consola para extraer datos de un sitio web:
# Importamos las librerias
from urllib.request import urlopen
from bs4 import BeautifulSoup
import requests
import time
import os
import re
# Capturamos la url
html = urlopen('http://maplestory.nexon.net/rankings/world-ranking/reboot-(na)?pageIndex=1&character_name=Elfwinny')
url = "http://maplestory.nexon.net/rankings/world-ranking/reboot-(na)?pageIndex=1&character_name=Elfwinny"
bs = BeautifulSoup(html, 'html.parser')
# Capturamos el hml de la pagina web y creamos un objeto Response
r = requests.get(url)
data = r.text
#Sacamos toda la información de la tabla de rank proporcionada:
soup = BeautifulSoup(data, 'lxml')
avatar = bs.find_all('img', {'src':re.compile('.png')})
job = bs.find_all('img', {'src':re.compile('.gif')})
htnm_migration_table = soup.find("table", {'class':''})
tbody = htnm_migration_table.find('tbody')
trs = htnm_migration_table.find('tr')
td = htnm_migration_table.find_all('td')
print("Avatar de ElfWinny: " + avatar[2]["src"])
print("Nickname: " + td[2].text)
print("Job: " + job[0]["src"])
print("Nivel: " + td[5].text.split('n')[2].replace(" ","").strip())
print("Experiencia: " + td[5].text.split('n')[3].replace(" ","").strip())
print("Posicion: " + td[0].text.split('n')[1])
Como podrán ver, unicamente lo que hace es utilizar lo que contienen las variables de arriba "html" y "url" para de ese enlace extraer la información que necesito. Lo que quisiera hacer con mi bot de discod sería el automatizar el enlace siento la báse ‘http://maplestory.nexon.net/rankings/world-ranking/reboot-(na)?pageIndex=1&character_name=’ y despues completarlo con lo que el usuario ponga. Por ejemplo si pone !rank jugador1, que el bot automatize la busqueda poniendo en las variabels html y url ‘http://maplestory.nexon.net/rankings/world-ranking/reboot-(na)?pageIndex=1&character_name=jugador1’.
Y posteriormente presentar dicha informacion en un Embed como el siguiente:
embed = discord.Embed(title=f"Reboot Ranking", description="Resumen de tu personaje", color=discord.Color.blue())
embed.add_field(name="Nombre del Personaje: ", value= td[2].text)
embed.add_field(name="Job: ", value= job[0]["src"])
embed.add_field(name="Nivel: ", value=f"{ctx.guild.region}")
embed.add_field(name="Server ID", value= td[5].text.split('n')[2].replace(" ","").strip())
embed.add_field(name="Experiencia: ", value= td[5].text.split('n')[3].replace(" ","").strip())
embed.add_field(name="Posicion: ", value= td[0].text.split('n')[1]
embed.set_thumbnail(url="https://pluralsight.imgix.net/paths/python-7be70baaac.png")
await ctx.send(embed=embed)
Espero haber sido claro con lo que deseo aprender a hacer. Gracias por leer!
Gracias a @coronel99 por hacerme una observacion muy obvia, logré resolver lo del comando de discord, aqui esta mi código por si alguien lo necesita:
@bot.command(name="rankr")
async def rankr(ctx, arg):
html = urlopen('url' + arg)
url = "url" + arg
bs = BeautifulSoup(html, 'html.parser')
# Capturamos el hml de la pagina web y creamos un objeto Response
r = requests.get(url)
data = r.text
#Sacamos toda la información de la tabla de rank proporcionada:
soup = BeautifulSoup(data, 'lxml')
avatar = bs.find_all('img', {'src':re.compile('.png')})
job = bs.find_all('img', {'src':re.compile('.gif')})
htnm_migration_table = soup.find("table", {'class':''})
tbody = htnm_migration_table.find('tbody')
trs = htnm_migration_table.find('tr')
td = htnm_migration_table.find_all('td')
#comienza el formato del mensaje del bot:
embed = discord.Embed(title=f"Posicionamiento de: " + td[2].text, description="Ranking de Reboot" , color=discord.Color.dark_orange())
embed.add_field(name="Nickname: ", value=td[2].text)
embed.add_field(name="Nivel: ", value=td[5].text.split('n')[2].replace(" ","").strip())
embed.add_field(name="Experiencia: ", value=td[5].text.split('n')[3].replace(" ","").strip())
embed.add_field(name="Posicion: ", value=td[0].text.split('n')[1])
embed.set_thumbnail(url= avatar[2]["src"])
await ctx.send(embed=embed)
Answered by Alan Carlos Lopez on August 26, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP