Analyser le JavaScript renvoyé par BeautifulSoup
Je voudrais analyser la page web http://dcsd.nutrislice.com/menu/meadow-view/lunch/ à saisir aujourd'hui le menu du midi. (J'ai construit un Adafruit #IoT Imprimante Thermique et je voudrais imprimer automatiquement le menu de chaque jour.)
J'ai d'abord abordé ce problème à l'aide de BeautifulSoup, mais il s'avère que la plupart des données sont chargées en JavaScript et je ne suis pas sûr de BeautifulSoup peut le manipuler. Si vous affichez la source, vous verrez les données pertinentes stockées dans bootstrapData['menuMonthWeeks']
.
import urllib2
from BeautifulSoup import BeautifulSoup
url = "http://dcsd.nutrislice.com/menu/meadow-view/lunch/"
soup = BeautifulSoup(urllib2.urlopen(url).read())
C'est un moyen facile d'obtenir de la source et de l'examen.
Ma question est: quel est le moyen le plus facile pour extraire ces données de sorte que je peux faire quelque chose avec elle? Littéralement, tout ce que je veux est une chaîne de caractères quelque chose comme:
Sud-ouest, Omelette au Fromage, pommes de terre frites, La Récolte de la Barre (THB), THB - Fromage au Pesto de Pain, de Jambon Sandwich, Rouge de Bâtonnets de poivrons, Fraises
J'ai pensé à utiliser webkit pour traiter la page et obtenir le code HTML (c'est à dire ce qu'est un navigateur), mais qui semble inutilement complexe. Je préfère tout simplement de trouver quelque chose qui peut analyser la bootstrapData['menuMonthWeeks']
de données.
source d'informationauteur Wade | 2014-01-11
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme PhantomJS peut être plus robuste, mais voici quelques éléments de base du code Python à extraire le menu complet:
Après cela, vous aurez envie de chercher dans le menu pour la date qui vous intéresse.
MODIFIER: Certains exagéré de ma part:
Tous vous avez besoin est un peu de la chaîne de découpage:
JSON est, après tout, un sous-ensemble de JavaScript.
sans BeautifulSoup, un moyen simple peut nous:
de sortie:
pour plus générique façon de voir JavaScript analyseur en Python