This commit is contained in:
Adrian Amaglio 2021-09-12 15:05:41 +02:00
commit a812c25269
2 changed files with 70 additions and 0 deletions

69
main.py Normal file
View File

@ -0,0 +1,69 @@
from bs4 import BeautifulSoup
import urllib.request
import time
items = {}
def get_ingredients (text):
ingredients = {}
soup = BeautifulSoup(text, 'lxml')
table = soup.findAll('table', {'class':'add_stat_table'})[0]
for child in table.children:
a = tuple(tuple(child.children)[0].children)[0]
ingredients[a.attrs['href']] = int(tuple(a.children)[1].text.split('( x')[-1][:-2])
return ingredients
def get_ingredients2 (text):
ingredients = {}
soup = BeautifulSoup(text, 'lxml')
table = soup.findAll('table', {'class':'add_stat_table'})[0]
key = ''
for child in tuple(tuple(table.children)[0].children)[0].children:
if child.has_attr('href'):
key = child.text
ingredients[key] = None
elif child.text.startswith('x'):
ingredients[key] = int(child.text[2:])
# On skip les arbres et les cailloux…
for i in ingredients:
if ingredients[i] is None:
return {}
return ingredients
def request(url):
time.sleep(1)
r = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
r = urllib.request.urlopen(r)
return r.read()
def recetter_un_objet (url):
hostname = '/'.join(url.split('/')[:3])
try:
ingredients = get_ingredients(request(url))
except Exception as e:
print('Error parsing ', url)
raise e
for ingredient in ingredients:
try:
i2 = get_ingredients2(request(hostname + ingredient))
except Exception as e:
print('Error parsing ', url)
raise e
for i in i2:
if i not in items:
items[i] = 0
items[i] += i2[i] * ingredients[ingredient]
if __name__ == '__main__':
print('Compteur de recette. Fonctionne avec https://genshin.honeyhunterworld.com en septembre 2021. On lit le fichier urls.txt')
with open('urls.txt', 'r') as f:
for line in f:
line = line.strip()
print('parsing ', line)
recetter_un_objet(line)
print(items)

1
urls.txt Normal file
View File

@ -0,0 +1 @@
https://genshin.honeyhunterworld.com/db/item/hs_59/?lang=FR