Stracage sur le Web à l'aide de Python

Stracage sur le Web à l'aide de Python
Le grattage Web est un moyen automatisé d'extraire et de traiter les informations des sites Web Internet en très grand montant. Les données sur les sites Web d'Internet ne sont pas structurées, qui peuvent être collectées et structurées via le grattage Web. Les moteurs de recherche comme Google, Bing, Yahoo ont des robots qui grattent les données des sites Web Internet et les indexent sur leurs pages de recherche. Les données peuvent également être extraites à l'aide d'API, ce qui est probablement l'un des meilleurs moyens d'extraire les données du Web. Des sites Web célèbres comme Facebook, Google, Amazon fournissent aux utilisateurs des API bien structurées pour interagir avec les données, mais vous ne verrez pas ces API partout.

Par exemple, si vous souhaitez obtenir des mises à jour régulières sur vos produits préférés pour les offres de réduction ou si vous souhaitez automatiser le processus de téléchargement des épisodes de votre saison préférée un par un, et le site Web n'a pas d'API, alors le seul choix Vous vous retrouvez avec le grattage Web.Le grattage Web peut être illégal sur certains sites Web, selon que un site Web le permet ou non. Les sites Web utilisent «Robots.Fichier txt "pour définir explicitement les URL qui ne sont pas autorisées à être abandonnées. Vous pouvez vérifier si le site Web le permet ou non en ajoutant «Robots.txt »avec le nom de domaine du site Web. Par exemple, https: // www.Google.com / robots.SMS

Dans cet article, nous utiliserons Python pour le grattage car il est très facile à configurer et à utiliser. Il dispose de nombreux bibliothèques intégrées et tierces qui peuvent être utilisées pour gratter et organiser des données. Nous utiliserons deux bibliothèques Python «Urllib» pour récupérer la page Web et «BeautifulSoup» pour analyser la page Web pour appliquer les opérations de programmation.

Comment fonctionne le grattage Web?

Nous envoyons une demande à la page Web, d'où vous souhaitez gratter les données. Le site Web répondra à la demande avec le contenu HTML de la page. Ensuite, nous pouvons analyser cette page Web à BeautifulSoup pour un traitement ultérieur. Pour récupérer la page Web, nous utiliserons la bibliothèque «Urllib» à Python.

Urllib téléchargera le contenu de la page Web en HTML. Nous ne pouvons pas appliquer des opérations de chaîne à cette page Web HTML pour l'extraction de contenu et le traitement ultérieur. Nous utiliserons une bibliothèque Python «BeautifulSoup» qui analysera le contenu et extraire les données intéressantes.

Gratter les articles de Linuxhint.com

Maintenant que nous avons une idée du fonctionnement du grattage du Web, faisons un peu de pratique. Nous essaierons de gratter les titres et les liens d'articles de Linuxhint.com. So ouvre https: // linuxhint.com / dans votre navigateur.

Maintenant, appuyez sur CRTL + U pour afficher le code source HTML de la page Web.

Copiez le code source et accédez à https: // htmlformatter.com / pour brasser le code. Après avoir empêché le code, il est facile d'inspecter le code et de trouver des informations intéressantes.

Maintenant, copiez à nouveau le code formaté et collez-le dans votre éditeur de texte préféré comme Atom, Sublime Text, etc. Maintenant, nous allons gratter les informations intéressantes en utilisant Python. Tapez les éléments suivants

// Installez la belle bibliothèque de soupe, Urllib vient
préinstallé à Python
ubuntu @ ubuntu: ~ $ sudo pip3 installer bs4
ubuntu @ ubuntu: ~ $ python3
Python 3.7.3 (par défaut, 7 octobre 2019, 12:56:13)
[GCC 8.3.0] sur Linux

Tapez «Help», «Copyright», «Crédits» ou «Licence» pour plus d'informations.

// importe Urllib
>>> Importer Urllib.demande
// Importer BeautifulSoup
>>> De BS4 Import BeautifulSoup
// Entrez l'URL que vous souhaitez récupérer
>>> my_url = 'https: // linuxhint.com / '
// demande la page Web URL à l'aide de la commande URLOpen
>>> Client = Urllib.demande.urlopen (my_url)
// Stockez la page Web HTML dans la variable «HTML_PAGE»
>>> html_page = client.lire()
// Fermez la connexion URL après avoir récupéré la page Web
>>> Client.fermer()
// Analyser la page Web HTML à BeautifulSoup pour gratter
>>> page_soup = belle (html_page, "html.analyseur ")

Regardons maintenant le code source HTML que nous venons de copier et de coller pour trouver des choses de notre intérêt.

Vous pouvez voir que le premier article répertorié sur Linuxhint.com est nommé «74 exemples d'opérateurs de bash», trouve cela dans le code source. Il est enfermé entre les balises d'en-tête, et son code est



class = "catégorie 1561"> programmation bash


title = "74 exemples d'opérateurs bash"> 74 opérateurs bash
Exemples


Le même code se répète encore et encore avec le changement de titres et de liens d'articles. Le prochain article a le code HTML suivant



class = "catégorie 1343"> ubuntu
vernis


title = "Comment configurer le cache de vernis sur Ubuntu 18.04 ">
Comment configurer le cache de vernis sur Ubuntu 18.04


Vous pouvez voir que tous les articles, y compris ces deux, sont enfermés dans le même "

«Tag et utilisez la même classe« entrée ». Nous pouvons utiliser la fonction «Findall» dans la belle bibliothèque de soupe pour trouver et énumérer tout «

«Avoir une classe« entrée ». Tapez ce qui suit dans votre console Python

// Cette commande trouvera tout "

»Éléments de balise ayant une classe nommée
«Entrée». La sortie sera stockée dans un tableau.
>>> articles = page_soup.Findall ("H2" ,
"classe": "entrée")
// le nombre d'articles trouvés sur la première page de Linuxhint.com
>>> Len (articles)
102
// d'abord extrait "

”Élément de balise contenant le nom et le lien de l'article
>>> Articles [0]


title = "74 exemples d'opérateurs bash">
74 exemples d'opérateurs de bash


// deuxième extrait "

”Élément de balise contenant le nom et le lien de l'article
>>> Articles [1]


title = "Comment configurer le cache de vernis sur Ubuntu 18.04 ">
Comment configurer le cache de vernis sur Ubuntu 18.04


// Affichage du texte uniquement dans des balises HTML à l'aide de la fonction de texte
>>> Articles [1].texte
'Comment configurer le cache de vernis sur Ubuntu 18.04 '

Maintenant que nous avons une liste des 102 HTML "

”Tag Elements qui contient un lien d'article et un titre d'article. Nous pouvons extraire les deux liens et titres d'articles. Pour extraire les liens des balises «», nous pouvons utiliser le code suivant

// Le code suivant extrait le lien de d'abord

élément d'étiquette
>>> pour le lien dans les articles [0].find_all ('a', href = true):
… Imprimer (lien ['href'])

https: // linuxhint.com / bash_operator_examples /

Maintenant, nous pouvons écrire une boucle pour itérère à travers chaque «

«Élément de balise dans la liste des« articles »et extraire le lien et le titre de l'article.

>>> pour i à portée (0,10):
… Imprimer (articles [i].texte)
… Pour un lien dans les articles [i].find_all ('a', href = true):
… Imprimer (lien ['href'] + "\ n")

74 exemples d'opérateurs de bash
https: // linuxhint.com / bash_operator_examples /
Comment configurer le cache de vernis sur Ubuntu 18.04
https: // linuxhint.com / varnish_cache_ubuntu_1804 /
Pinetime: une montre intelligente conviviale à Linux
https: // linuxhint.com / pinetime_linux_smartwatch /
10 meilleurs ordinateurs portables Linux bon marché à acheter sur un budget
https: // linuxhint.com / best_cheap_linux_laptops /
HD Remastered Games for Linux qui n'a jamais eu de sortie Linux…
https: // linuxhint.com / hd_remetered_games_linux /
Applications d'enregistrement d'écran de 60 ips pour Linux
https: // linuxhint.com / 60_fps_screen_recording_apps_linux /
74 exemples d'opérateurs de bash
https: // linuxhint.com / bash_operator_examples /
… Snip…

De même, vous enregistrez ces résultats sur un fichier JSON ou CSV.

Conclusion

Vos tâches quotidiennes ne sont pas seulement la gestion des fichiers ou l'exécution des commandes système. Vous pouvez également automatiser des tâches liées au Web comme l'automatisation du téléchargement de fichiers ou l'extraction de données en grattant le Web en Python. Cet article était limité à une simple extraction de données, mais vous pouvez effectuer une énorme automatisation des tâches en utilisant «Urllib» et «BeautifulSoup».