Guest User

Untitled

a guest
Nov 21st, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.83 KB | None | 0 0
  1. from requests_html import HTMLSession
  2. import re
  3. import pprint
  4.  
  5.  
  6. def main():
  7.     persona_links = get_persona_links()
  8.     counter = 1
  9.     compendium = create_compendium(persona_links, counter)
  10.     pprint.pprint(compendium)
  11.  
  12.  
  13. def get_persona_links():
  14.     links = []
  15.     session = HTMLSession()
  16.     url = 'https://chinhodado.github.io/persona5_calculator/index.html#/list'
  17.  
  18.     source = session.get(url)
  19.     source.html.render()
  20.  
  21.     persona_table = source.html.find('table#list', first=True).find('tr.ng-scope')
  22.     for persona in persona_table:
  23.         link = persona.find('a', first=True).attrs['href'].replace('#', '')
  24.         full_link = 'https://chinhodado.github.io/persona5_calculator/index.html#' + link
  25.         links.append(full_link)
  26.     return links
  27.  
  28.  
  29. def create_compendium(persona_links, counter):
  30.     personaCompendium = {}
  31.     session = HTMLSession()
  32.  
  33.     for url in persona_links:
  34.         source = session.get(url)
  35.         source.html.render()
  36.  
  37.         name, level, arcana = re.split(r"[\(/]", source.html.find('h2.ng-binding', first=True).text)
  38.         name = name.rstrip()
  39.         level = level.rstrip()
  40.         arcana = arcana.lstrip().replace(')', '')
  41.  
  42.         personaCompendium[name] = {}
  43.         personaCompendium[name]['Level'] = level
  44.         personaCompendium[name]['Arcana'] = arcana
  45.  
  46.         strength, magic, endurance, agility, luck = source.html.find('table#statsTable tbody td')
  47.         personaCompendium[name]['Strength'] = strength.text
  48.         personaCompendium[name]['Magic'] = magic.text
  49.         personaCompendium[name]['Endurance'] = endurance.text
  50.         personaCompendium[name]['Agility'] = agility.text
  51.         personaCompendium[name]['Luck'] = luck.text
  52.  
  53.         resistances_source = source.html.find('table[class="ui table unstackable striped mobile-hidden"]', first=True).find('td')
  54.         resistances = []
  55.         for resistance in resistances_source:
  56.             resistances.append(resistance.text)
  57.         resistances = tuple(resistances)
  58.         personaCompendium[name]['Resistances'] = resistances
  59.  
  60.         skills_source = source.html.find('table#skillTable', first=True).find('tr')[1:]
  61.         personaCompendium[name]['Skills'] = {}
  62.         for skill in skills_source:
  63.             skill_lvl, skill_type, skill_name, effect, cost = skill.find('td')
  64.             personaCompendium[name]['Skills'][skill_name.text] = {}
  65.             personaCompendium[name]['Skills'][skill_name.text]['Level'] = skill_lvl.text
  66.             personaCompendium[name]['Skills'][skill_name.text]['Type'] = skill_type.text
  67.             personaCompendium[name]['Skills'][skill_name.text]['Effect'] = effect.text
  68.             personaCompendium[name]['Skills'][skill_name.text]['Cost'] = cost.text
  69.  
  70.         print(counter)
  71.         counter += 1
  72.  
  73.     return personaCompendium
  74.  
  75.  
  76. if __name__ == "__main__":
  77.     main()
Advertisement
Add Comment
Please, Sign In to add comment