Closed a2br closed 1 year ago
Bonjour,
Tout d'abord la fonction findAll()
n'existe plus et a été remplacée par find_all()
. Voir Beautiful Soup Documentation (https://www.crummy.com/software/BeautifulSoup/bs4/doc/#).
Ensuite, la classe recipe-card
n'existe plus sur la page Marmiton (https://www.marmiton.org/recettes/recherche.aspx?).
Solution possible :
Dans le script __init__.py
de la library marmiton, importer le package json
puis réécrire la fonction search()
de la classe Marmiton.
def search(query_dict):
base_url = "https://www.marmiton.org/recettes/recherche.aspx?"
query_url = urllib.parse.urlencode(query_dict)
url = base_url + query_url
html_content = urllib.request.urlopen(url).read()
soup = BeautifulSoup(html_content, 'html.parser')
return json.loads(soup.find('script', type='application/json').string)
Pour afficher l'ensemble des resultats (titres) d'une requête il suffit d'écrire dans le script example.py
:
query_options = {
"aqt": "boeuf bourguignon", # Query keywords - separated by a white space
"dt": "platprincipal", # Plate type : "entree", "platprincipal", "accompagnement", "amusegueule", "sauce" (optional)
"exp": 2, # Plate price : 1 -> Cheap, 2 -> Medium, 3 -> Kind of expensive (optional)
"dif": 2, # Recipe difficulty : 1 -> Very easy, 2 -> Easy, 3 -> Medium, 4 -> Advanced (optional)
"veg": 0, # Vegetarien only : 0 -> False, 1 -> True (optional)
}
query_result = Marmiton.search(query_options)
recipes = query_result['props']['pageProps']['searchResults']['hits']
for recipe in recipes:
print(recipe['title'])
Merci @PaulPaillet (Voir Fix parsing issue #20).
Fixed in last version (0.4.2)
Après avoir débuggé le code d'exemple du README qui ne marchait pas (ressortait une liste vide), j'ai trouvé que c'était cette ligne qui clochait : elle ne fait pas ce qu'elle laisse penser qu'elle fait. La classe
.recipe-card
n'existe pas du tout dans toute la page, on dirait que ce doit être mis à jour. https://github.com/remaudcorentin-dev/python-marmiton/blob/c9f0088aaad8d603998e9c96383c328a9c9baa7e/marmiton/__init__.py#L41