1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- from dataclasses import dataclass, field
- from typing import List, Dict
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.common.by import By
- from datetime import datetime
- import pandas as pd
- @dataclass
- class Market():
- url:str = 'https://play.boobylegends.com/market/'
- Cards:List[dict] = field(default_factory=list)
- asOf:datetime = datetime.utcnow()
- df:pd.DataFrame = field(default_factory=pd.DataFrame)
- def fetchData(self):
- driver = webdriver.Chrome()
- driver.get(self.url)
- self.asOf=datetime.utcnow()
- cards=driver.find_elements(By.CLASS_NAME, 'wrapper-market-card')
- for card in cards:
- Card={}
- IDs=card.find_element(By.CLASS_NAME,'titre-card').text.split('\n')
- Card['card-num']=int(IDs[1])
- Card['name']=IDs[0]
- link=card.find_element(By.TAG_NAME,'a')
- Card['card-id'] = int(link.get_attribute('card-id'))
- Card['phid'] = link.get_attribute('phid')
- Card['level'] = link.get_attribute('level')
- Card['link'] = link.get_attribute('href')
- Card['val']= int(card.find_element(By.CLASS_NAME,'score-card').text)
- Card['qty']= int(card.find_element(By.CLASS_NAME,'qty').text)
- Card['cost']= int(card.find_element(By.CLASS_NAME,'cost').text)
- self.Cards.append(Card)
- driver.close()
- self.loadDF()
- def loadDF(self):
- self.df=pd.DataFrame(self.Cards)
- self.df.sort_values(by='card-num', ascending=True, inplace=True)
- def show(self):
- pdf=self.df.drop(['link','card-id','phid'], axis=1)
- print(pdf.to_string(index=False))
|