issue154:python
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
issue154:python [2020/03/05 13:53] – auntiee | issue154:python [2020/03/05 14:46] (Version actuelle) – andre_domenech | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
My eighth article for Full Circle back in FCM#34 (February 2010) was about creating a very small and generic cookbook database. The fact that it is 10 years to the month since I first wrote about the database program hasn't escaped me.** | My eighth article for Full Circle back in FCM#34 (February 2010) was about creating a very small and generic cookbook database. The fact that it is 10 years to the month since I first wrote about the database program hasn't escaped me.** | ||
- | Comme peuvent le savoir beaucoup d' | + | Comme peuvent le savoir beaucoup d' |
Mon huitième article, dans le numéro 34 du FCM (février 2010) parlait de la création d'une toute petite base de données générique de cuisine. Le fait que, ce mois-ci, ça fait 10 ans que j'ai commencé à parler de cette base de données, ne m'a pas échappé. | Mon huitième article, dans le numéro 34 du FCM (février 2010) parlait de la création d'une toute petite base de données générique de cuisine. Le fait que, ce mois-ci, ça fait 10 ans que j'ai commencé à parler de cette base de données, ne m'a pas échappé. | ||
Ligne 17: | Ligne 17: | ||
**As I said, one of the things that I was both excited and worried about was the webpage scraper. I've tried writing a generic scraper before with limited success, but never could wrap my head around it properly. Part of the problem was that other things with a higher priority level would come up just as I was starting to be comfortable with the process, and I would have to put the project on hold. By the time I got around to revisiting the project, I had to spend a good while trying to remember what I was doing and how I had done it. I ended up so frustrated I started searching the web for some tips and tricks that others posted that might give me a leg up on my learning process.** | **As I said, one of the things that I was both excited and worried about was the webpage scraper. I've tried writing a generic scraper before with limited success, but never could wrap my head around it properly. Part of the problem was that other things with a higher priority level would come up just as I was starting to be comfortable with the process, and I would have to put the project on hold. By the time I got around to revisiting the project, I had to spend a good while trying to remember what I was doing and how I had done it. I ended up so frustrated I started searching the web for some tips and tricks that others posted that might give me a leg up on my learning process.** | ||
- | Comme je l'ai dit, l' | + | Comme je l'ai dit, l' |
**I stumbled upon a really nice project called " | **I stumbled upon a really nice project called " | ||
Ligne 35: | Ligne 35: | ||
$ pip install -e .** | $ pip install -e .** | ||
- | Le dépôt est situé à https:// | + | Le dépôt est situé à https:// |
$ pip install recipe-scrapers | $ pip install recipe-scrapers | ||
- | Vous pouvez aussi cloner ou télécharger le dépôt et, une fois qu'il est sur votre machine, aller dans le dossier principal (recipe-scrapers) et utiliser pip pour l' | + | Vous pouvez aussi cloner ou télécharger le dépôt et, une fois qu'il est sur votre machine, aller dans le dossier principal (recipe-scrapers) et utiliser pip pour l' |
$ pip install -e | $ pip install -e | ||
Ligne 57: | Ligne 57: | ||
Maintenant, ouvrez votre environnement de développement (IDE) ou votre éditeur préféré et créez un nouveau fichier. Appelons-le « scrapertest.py ». | Maintenant, ouvrez votre environnement de développement (IDE) ou votre éditeur préféré et créez un nouveau fichier. Appelons-le « scrapertest.py ». | ||
- | Bien sûr, la première chose que vous devez faire est d' | + | Bien sûr, la première chose que vous devez faire est d' |
from recipe_scrapers import scrape_me | from recipe_scrapers import scrape_me | ||
Ligne 75: | Ligne 75: | ||
Note: Some scrapers may provide more or less information depending on the site and if the author of the scraper included it.** | Note: Some scrapers may provide more or less information depending on the site and if the author of the scraper included it.** | ||
- | Ensuite, il faut créer une variable qui contient l'URL de la page du site... | + | Ensuite, il faut créer une variable qui contient l'URL de la page du site : |
site = ' | site = ' | ||
- | Maintenant, nous créons une instance de l' | + | Maintenant, nous créons une instance de l' |
scraper = scrape_me(site) | scraper = scrape_me(site) | ||
- | Une fois fait, nous pouvons commencer à fouiller dans les informations que l' | + | Une fois fait, nous pouvons commencer à fouiller dans les informations que l' |
Note : certains extracteurs fournissent plus ou moins d' | Note : certains extracteurs fournissent plus ou moins d' | ||
Ligne 108: | Ligne 108: | ||
With this small change, our output now looks like that shown far right.** | With this small change, our output now looks like that shown far right.** | ||
- | Il est évident que les ingrédients ressortent comme une liste Python ; aussi, changeons un peu le programme pour améliorer la lisibilité des données. Commentez la ligne qui imprime la liste comme une « globale » et remplacez-la par... | + | Il est évident que les ingrédients ressortent comme une liste Python ; aussi, changeons un peu le programme pour améliorer la lisibilité des données. Commentez la ligne qui imprime la liste comme une « globale » et remplacez-la par : |
# print(f' | # print(f' | ||
Ligne 132: | Ligne 132: | ||
Be sure to indent the rest of the code so that it all falls under the if statement.** | Be sure to indent the rest of the code so that it all falls under the if statement.** | ||
- | Maintenant, améliorons un peu le programme pour permettre à un utilisateur d' | + | Maintenant, améliorons un peu le programme pour permettre à un utilisateur d' |
- | site = input(' | + | site = input (' |
if site != '': | if site != '': | ||
Ligne 165: | Ligne 165: | ||
Again, be sure to match the indentation level of the rest of the code. Finally, at the very end of the code, add the following two lines (below).** | Again, be sure to match the indentation level of the rest of the code. Finally, at the very end of the code, add the following two lines (below).** | ||
- | Cette erreur est facile à éviter. Tous les sites qui sont supportés sont stockés dans un dictionnaire nommé SCRAPERS. Ce que nous ferons, c'est de récupérer le domaine dans l'URL et de voir s'il est dans le dictionnaire SCRAPERS. Nous pouvons le faire en important la bibliothèque urlparse... | + | Cette erreur est facile à éviter. Tous les sites qui sont supportés sont stockés dans un dictionnaire nommé SCRAPERS. Ce que nous ferons, c'est de récupérer le domaine dans l'URL et de voir s'il est dans le dictionnaire SCRAPERS. Nous pouvons le faire en important la bibliothèque urlparse |
from urllib.parse import urlparse | from urllib.parse import urlparse | ||
Ligne 182: | Ligne 182: | ||
That’s it.This base code can be easily worked into a GUI form as well. Here’s a shot of what my GUI scraper form looks like.** | That’s it.This base code can be easily worked into a GUI form as well. Here’s a shot of what my GUI scraper form looks like.** | ||
- | Maintenant, quand vous lancerez le programme en utilisant une URL non supportée, vous verrez ce qui suit... | + | Maintenant, quand vous lancerez le programme en utilisant une URL non supportée, vous verrez ce qui suit : |
Merci de saisir le site Web à extraire (laissez vierge pour quitter) -> | Merci de saisir le site Web à extraire (laissez vierge pour quitter) -> |
issue154/python.1583412788.txt.gz · Dernière modification : 2020/03/05 13:53 de auntiee