web-dev-qa-db-fra.com

Comment analyser un site Web/extraire des données dans une base de données avec Python?

J'aimerais créer une application Web pour aider les autres étudiants de mon université à créer leur emploi du temps. Pour ce faire, j'ai besoin d'explorer les programmes principaux (une page HTML énorme) ainsi qu'un lien vers une description détaillée de chaque cours dans une base de données, de préférence en python. De plus, je dois me connecter pour accéder aux données.

  • Comment cela fonctionnerait-il?
  • Quels outils/bibliothèques puis-je/devrais-je utiliser?
  • Y at-il de bons tutoriels à ce sujet?
  • Comment gérer au mieux les données binaires (par exemple, un joli pdf)?
  • Y a-t-il déjà de bonnes solutions pour cela?
11
McEnroe

Si vous voulez utiliser un puissant framework de scraping, il y a Scrapy . Il a aussi une bonne documentation. Cela peut être un peu excessif en fonction de votre tâche cependant.

11
Acorn

Scrapy est probablement la meilleure bibliothèque Python pour l'exploration. Il peut maintenir l'état des sessions authentifiées. 

Le traitement des données binaires doit être traité séparément. Pour chaque type de fichier, vous devrez le gérer différemment selon votre propre logique. Pour presque tous les formats, vous pourrez probablement trouver une bibliothèque. Par exemple, regardez PyPDF pour la gestion des PDF. Pour les fichiers Excel, vous pouvez essayer xlrd.

3
sharjeel

J'ai aimé utiliser BeatifulSoup pour extraire des données HTML

C'est aussi simple que ça:

from BeautifulSoup import BeautifulSoup 
import urllib

ur = urllib.urlopen("http://pragprog.com/podcasts/feed.rss")
soup = BeautifulSoup(ur.read())
items = soup.findAll('item')

urls = [item.Enclosure['url'] for item in items]
1
Alexey Grigorev

À cette fin, il existe un outil très utile appelé web-harvestLien vers leur site Web http://web-harvest.sourceforge.net/

0
Riz