market.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from dataclasses import dataclass, field
  2. from typing import List, Dict
  3. from selenium import webdriver
  4. from selenium.webdriver.common.keys import Keys
  5. from selenium.webdriver.common.by import By
  6. from datetime import datetime
  7. import pandas as pd
  8. @dataclass
  9. class Market():
  10. url:str = 'https://play.boobylegends.com/market/'
  11. Cards:List[dict] = field(default_factory=list)
  12. asOf:datetime = datetime.utcnow()
  13. df:pd.DataFrame = field(default_factory=pd.DataFrame)
  14. def fetchData(self):
  15. driver = webdriver.Chrome()
  16. driver.get(self.url)
  17. self.asOf=datetime.utcnow()
  18. cards=driver.find_elements(By.CLASS_NAME, 'wrapper-market-card')
  19. for card in cards:
  20. Card={}
  21. IDs=card.find_element(By.CLASS_NAME,'titre-card').text.split('\n')
  22. Card['card-num']=int(IDs[1])
  23. Card['name']=IDs[0]
  24. link=card.find_element(By.TAG_NAME,'a')
  25. Card['card-id'] = int(link.get_attribute('card-id'))
  26. Card['phid'] = link.get_attribute('phid')
  27. Card['level'] = link.get_attribute('level')
  28. Card['link'] = link.get_attribute('href')
  29. Card['val']= int(card.find_element(By.CLASS_NAME,'score-card').text)
  30. Card['qty']= int(card.find_element(By.CLASS_NAME,'qty').text)
  31. Card['cost']= int(card.find_element(By.CLASS_NAME,'cost').text)
  32. self.Cards.append(Card)
  33. driver.close()
  34. self.loadDF()
  35. def loadDF(self):
  36. self.df=pd.DataFrame(self.Cards)
  37. self.df.sort_values(by='card-num', ascending=True, inplace=True)
  38. def show(self):
  39. pdf=self.df.drop(['link','card-id','phid'], axis=1)
  40. print(pdf.to_string(index=False))