Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from requests_html import HTMLSession
- import re
- import pprint
- def main():
- persona_links = get_persona_links()
- counter = 1
- compendium = create_compendium(persona_links, counter)
- pprint.pprint(compendium)
- def get_persona_links():
- links = []
- session = HTMLSession()
- url = 'https://chinhodado.github.io/persona5_calculator/index.html#/list'
- source = session.get(url)
- source.html.render()
- persona_table = source.html.find('table#list', first=True).find('tr.ng-scope')
- for persona in persona_table:
- link = persona.find('a', first=True).attrs['href'].replace('#', '')
- full_link = 'https://chinhodado.github.io/persona5_calculator/index.html#' + link
- links.append(full_link)
- return links
- def create_compendium(persona_links, counter):
- personaCompendium = {}
- session = HTMLSession()
- for url in persona_links:
- source = session.get(url)
- source.html.render()
- name, level, arcana = re.split(r"[\(/]", source.html.find('h2.ng-binding', first=True).text)
- name = name.rstrip()
- level = level.rstrip()
- arcana = arcana.lstrip().replace(')', '')
- personaCompendium[name] = {}
- personaCompendium[name]['Level'] = level
- personaCompendium[name]['Arcana'] = arcana
- strength, magic, endurance, agility, luck = source.html.find('table#statsTable tbody td')
- personaCompendium[name]['Strength'] = strength.text
- personaCompendium[name]['Magic'] = magic.text
- personaCompendium[name]['Endurance'] = endurance.text
- personaCompendium[name]['Agility'] = agility.text
- personaCompendium[name]['Luck'] = luck.text
- resistances_source = source.html.find('table[class="ui table unstackable striped mobile-hidden"]', first=True).find('td')
- resistances = []
- for resistance in resistances_source:
- resistances.append(resistance.text)
- resistances = tuple(resistances)
- personaCompendium[name]['Resistances'] = resistances
- skills_source = source.html.find('table#skillTable', first=True).find('tr')[1:]
- personaCompendium[name]['Skills'] = {}
- for skill in skills_source:
- skill_lvl, skill_type, skill_name, effect, cost = skill.find('td')
- personaCompendium[name]['Skills'][skill_name.text] = {}
- personaCompendium[name]['Skills'][skill_name.text]['Level'] = skill_lvl.text
- personaCompendium[name]['Skills'][skill_name.text]['Type'] = skill_type.text
- personaCompendium[name]['Skills'][skill_name.text]['Effect'] = effect.text
- personaCompendium[name]['Skills'][skill_name.text]['Cost'] = cost.text
- print(counter)
- counter += 1
- return personaCompendium
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment