2010-04-15 3 views
4

Par exemple, je besoin de saisir de http://gmail.com/ le nombre de stockage gratuit:Comment saisir du contenu dynamique sur le site Web et l'enregistrer?

Over <span id=quota>2757.272164</span> megabytes (and counting) of free storage. 

Et puis stocker ces chiffres dans une base de données MySql. Le nombre, comme vous pouvez le voir, change dynamiquement.

Y at-il un moyen que je peux configurer un côté serveur script qui va saisir ce numéro, chaque fois qu'il change, et l'enregistrer dans la base de données?

Merci.

+0

Juste pour clarifier, je n'ai pas besoin de me connecter à gmail, c'est une simple page "Bienvenue sur Gmail", avant de vous connecter. – Docstero

+0

Avez-vous besoin de plus d'informations pour accepter une réponse? – marcgg

Répondre

3

Étant donné que Gmail ne fournit aucune API pour obtenir ces informations, il semble que vous souhaitiez en faire web scraping.

racler Web (également appelé Web la récolte ou l'extraction de données Web) est une technique de logiciels de extraire des informations à partir de sites

Il existe de nombreuses façons de le faire, comme mentionné dans le wikipedia article lié avant:

humain copier-coller: Parfois, même la meilleure technologie de grattage Web peut pas remplacer l'examen manuel de l'homme et copier-coller, et parfois ce peut être la seule solution réalisable lorsque les sites Web pour gratter explicitement des barrières d'installation pour empêcher la machine automatisation.

Grepping texte et expression régulière correspondant: Une approche simple et puissant pour extraire des informations à partir pages Web peuvent être basées sur la commande grep UNIX ou une expression régulière installations correspondants des langages de programmation (par exemple Perl ou Python).

programmation HTTP: statique et dynamique pages Web peuvent être récupérées en affichant requêtes HTTP au serveur Web distant en utilisant la programmation socket.

analyse syntaxique DOM: En intégrant un navigateur Web à part entière , comme l' Internet Explorer ou le contrôle du navigateur Web Mozilla, les programmes peuvent récupérer le contenu dynamique généré par scripts côté client. Ces commandes du navigateur Web analysent également les pages Web dans un arbre DOM , en fonction des programmes qui peuvent récupérer des parties des pages Web.

HTML parseurs: Certains langages de requête de données semi-structurées, telles que le langage de requête XML (XQL) et le langage de requête hyper-texte (HTQL), peuvent être utilisés pour analyser les pages HTML et extraient et transformer le contenu Web.

logiciel Web-grattage: Il y a beaucoup logiciel Web-grattage disponible que peut être utilisé pour personnaliser le Web grattage solutions. Ces logiciels peuvent fournir une interface d'enregistrement Web qui supprime la nécessité d'écrire manuellement codes Web-grattage, ou certaines fonctions de script qui peuvent être utilisés pour extraire et transformer le contenu Web et interfaces de base de données qui peuvent stocker le gratté données dans des bases de données locales.

annotation sémantique reconnaissant: Les pages Web peuvent adopter des métadonnées ou /annotations sémantiques majorations qui peuvent être mis à profit pour localiser les données spécifiques extraits. Si les annotations sont incorporées dans les pages, comme le fait Microformat , cette technique peut être considérée comme un cas spécial d'analyse DOM. Dans un autre cas, les annotations, organisées en une couche sémantique 2, sont stockées et gérées séparés pour les pages Web, de sorte que les racleurs Web peuvent récupérer schéma de données et les instructions de cette couche avant de gratter les pages.

Et avant que je continue, gardez à l'esprit le legal implications de tout cela. Je ne sais pas si c'est conforme aux termes de gmail et je vous recommande de les vérifier avant d'aller de l'avant. Vous pourriez aussi finir par être sur une liste noire ou rencontrer d'autres problèmes comme celui-ci.

Tout cela étant dit, je dirais que, dans votre cas, vous avez besoin d'une sorte d'araignée et analyseur DOM pour se connecter à gmail et trouver les données que vous voulez. Le choix de cet outil dépendra de votre pile technologique. Comme un dev de ruby, j'aime utiliser Mechanize et nokogiri. En utilisant PHP, vous pouvez jeter un oeil à des solutions comme Sphider.

0

Une façon je peux vous voir faire cela (qui ne peut être le moyen le plus efficace) est d'utiliser PHP et YQL (de Yahoo!). Avec YQL, vous pouvez spécifier la page Web (www.gmail.com) et le XPATH pour obtenir la valeur dans la balise span. C'est essentiellement du web-scraping mais YQL vous fournit une bonne façon de le faire en utilisant 4-5 lignes de code.

Vous pouvez envelopper tout cela dans une fonction qui est appelée toutes les x secondes, ou quelle que soit la période de temps que vous recherchez.

+0

cela ne fonctionnerait pas vraiment puisque vous devez vous authentifier avant d'accéder aux données que l'OP recherche – marcgg

+0

Non, vous ne le feriez pas, les données qu'il recherche sont sur l'écran principal de connexion GMail. www.gmail.com –

+0

Comment puis-je appeler fonction chaque seconde? Cron? Comme je le sais, vous pouvez l'exécuter une fois par minute minimum. – Docstero

0

Laissant de côté les questions de légalité dans ce cas particulier, je suggère ce qui suit:

Essayer d'attaquer quelque chose d'impossible, d'arrêter et penser où l'impossibilité vient, et si vous avez choisi la bonne façon. Pensez-vous vraiment que quelqu'un dans son esprit émettrait une nouvelle connexion http ou pire encore, maintenez une connexion ouverte comet pour voir si le stockage commun a augmenté? Pour un utilisateur anonyme? Il suffit de regarder et de trouver une fonction qui calcule une valeur basée sur une valeur d'initialisation et l'heure actuelle.

+0

Ceci est juste un exemple, pour expliquer ce que je dois faire. Le vrai projet n'a rien à voir avec Gmail. Je voulais juste expliquer que je dois saisir des données dynamiques sur le site Web et les stocker. – Docstero

+0

@Docstero: les données dynamiques ne viennent pas de nulle part. Ils sont généralement le produit déterministe des données reçues du serveur. Il est plus simple de parler directement aux services web utilisés par le code client (j'ai même réussi à le faire à la place d'une application FLEX en utilisant pyamf). Sinon, votre application doit intégrer un navigateur à part entière ou être un plugin de navigateur (comme Firebug). – newtover

1

Initialement, je pensais qu'il n'était pas possible de penser que le numéro était initialisé par javascript.

Mais si vous désactivez le javascript, le numéro est présent dans la balise span, et une fonction javascript l'augmente probablement à intervalles réguliers. Par conséquent, vous pouvez utiliser curl, fopen, etc. pour lire le contenu de l'URL, puis analyser le contenu à la recherche de cette valeur pour la stocker dans la base de données. Et mettre en place un travail cron pour le faire sur une base régulière.

Il existe de nombreuses références sur la façon de procéder. Y compris SO. Si vous êtes coincé alors ouvrez simplement une autre question.

Avertissement: Nous avons des moyens de savoir si vos applications sont en train d'être supprimées et de bloquer votre adresse IP pendant un certain temps. Lisez le petit imprimé google. Cela m'est arrivé.

Questions connexes