La lecture de pages web générées dynamiquement à l'aide de python
Je suis en train de gratter un site web à l'aide de python et belle soupe. Je n'ai rencontré que dans certains sites, des liens de l'image, bien vu sur le navigateur ne peut pas être vu dans le code source. Cependant sur l'utilisation de Chrome Inspecter ou Fiddler, nous pouvons voir les codes correspondants.
Ce que je vois dans le code source est:
<div id="cntnt"></div>
Mais sur Chrome Inspecter, je peux voir tout un tas de HTML /CSS le code généré à l'intérieur de ce div class. Est-il un moyen de charger le contenu généré aussi à l'intérieur de python? Je suis à l'aide de l'ordinaire urllib en python et je suis en mesure d'obtenir la source, mais sans la partie générée.
Je ne suis pas un développeur web, donc je ne suis pas en mesure d'exprimer le comportement dans de meilleures conditions. N'hésitez pas à préciser si ma question semble vague !
- Le Contenu du site web peut être généré après le chargement via le javascript, Donc se référer à cette réponse -> stackoverflow.com/questions/8960288/...
- Pouvez-vous fournir l'URL en question? Vous aideront à diagnostiquer
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de JavaScript Moteur pour analyser et exécuter du code JavaScript à l'intérieur de la page.
Il y a un tas de headless navigateurs qui peuvent vous aider à
http://code.google.com/p/spynner/
http://phantomjs.org/
http://zombie.labnotes.org/
http://github.com/ryanpetrello/python-zombie
http://jeanphix.me/Ghost.py/
http://webscraping.com/blog/Scraping-JavaScript-webpages-with-webkit/
Le Contenu du site web peut être généré après le chargement via javascript, afin d'obtenir le script généré via python reportez-vous à cette réponse
Régulière d'un grattoir obtient juste le document HTML. Pour obtenir tout contenu généré par JavaScript logique, vous avez plutôt besoin d'un Navigateur sans qui permettrait également de générer les DOM, de charger et d'exécuter les scripts comme un navigateur. L'article de Wikipedia et quelques autres pages sur le Net ont des listes de personnes et de leurs capacités.
Garder à l'esprit au moment de choisir que certains précédemment principaux produits de ceux qui sont abandonnés maintenant.
ESSAYEZ DANS UN PREMIER TEMPS!
Peut-être les données peut techniquement être dans le script lui-même et tous ce moteur javascript d'affaires est nécessaire. (Quelques GRANDS liens ici!)
Mais de l'expérience, ma première hypothèse est que le JS est en tirant les données via une requête ajax. Si vous pouvez obtenir votre programme de simuler, vous aurez probablement tout ce dont vous avez besoin remis droit de vous sans aucune fastidieux d'analyse/d'exécution/grattage impliqué!
Il faudra un peu de travail de détective bien. Je suggère de tourner sur le trafic de votre réseau enregistreur (tels que "Web Developer Toolbar" dans Firefox), puis la visite du site. Concentrer votre attention attention sur tous les XmlHTTPRequests. Les données dont vous avez besoin doit être trouvé quelque part dans une de ces réponses, probablement dans le milieu de certains JSON texte.
Maintenant, voyez si vous pouvez re-créer la demande et d'obtenir les données directement. (REMARQUE: Vous devrez peut-être définir le User-Agent de votre demande afin que le serveur pense que vous êtes un "vrai" navigateur web.)