Thursday 9 February 2017

Ecal Forexpros

J'ai besoin d'exécuter un script qui effraye le site suivant tous les jours (quand le script est exécuté il raye le calendrier pour ce jour) (l'équivalent de cliquer sur le bouton quotidien) Je veux extraire tous les jours dataevents pour ce jour particulier, et Filtre pour les devises appropriées (le cas échéant) et de créer ensuite une sorte d'alerte ou de pop-up 10 minutes avant chacun de ces événements doivent avoir lieu. J'utilise le code ci-dessous jusqu'à présent pour effacer la page Web, puis afficher la variable html, mais ne peut pas trouver les informations de calendrier que j'ai besoin. A demandé Jan 8 14 à 17:39 À mon avis, la meilleure façon de gratter les données à partir de pages Web est d'utiliser BeautifulSoup. Voici un script rapide qui obtient les données que vous voulez. Pour vous donner quelques conseils sur la façon de résoudre un problème comme celui-ci à l'avenir, j'ai écrit les étapes que j'ai utilisé lors de la résolution de votre problème. J'espère que cela aide. J'ai ouvert la page Web dans Chrome, clic droit et sélectionné Inspect Element. J'ai trouvé l'iframe avec l'info en regardant dans l'onglet éléments, et ouvert cette url. Inspecté cette page ainsi, et compris que tous les éléments avec les données étaient des éléments lttrgt, et avait la classe ecbg1tr ou ecbg2tr. Je savais par des rencontres antérieures avec BS qu'il peut par exemple trouver tous les éléments tr avec la classe ecbg1tr en utilisant soup. findall (tr,). Mon initiale a été à la première boucle sur ces éléments, puis boucle sur les éléments ecbg2tr. Puis j'ai pensé que peut-être BS était assez intelligent pour accepter regexps comme entrée, donc j'ai vérifié leurs docs. Et il semblait que ce shouldnt être un problème. Suite à la recette de la documentation, j'ai ensuite essayé d'utiliser la simple regexp ecbg12tr. Ca-ching a répondu Jan 9 14 à 1:00 cette solution est vraiment agréable, je l'utilise maintenant pour mon analyse fondamentale, j'ai d'autres outils comme ystockquote bibliothèque python que j'ai utilisé avec certains de mon code pour une analyse technique sur Mon stock ce est agréable et personnalisable au maximum Steinar Lima. thank vous ndash toufikovich Mar 19 14 à 10:45 Votre réponse 2017 Stack Exchange, IncBasically Im essayez d'exécuter un code (Python 3.2) si une valeur sur un site change, sinon Attendre un peu et le vérifier plus tard. Tout d'abord, j'ai pensé que je pouvais simplement enregistrer la valeur dans une variable et de la comparer à la nouvelle valeur qui a été récupéré la prochaine fois que le script serait exécuté. Mais qui a rapidement rencontré des problèmes que la valeur a été écrasée lorsque le script serait exécuté à nouveau et initialiser cette variable. Alors, j'ai essayé juste d'enregistrer le html de la page Web en tant que fichier et ensuite de le comparer à la html qui serait appelée sur la prochaine fois que le script a couru. Pas de chance là non plus, car il a continué à venir False même quand il n'y avait pas de changements. Le suivant était décapage de la page Web et ensuite essayer de le comparer avec le html. Fait intéressant, cela n'a pas fonctionné ni dans le script. MAIS, si je tape le fichier pickle. load (open (D: DownloadhtmlString. p, rb)) après le script a exécuté et puis fichier html, il montre True quand il n'y a pas eu de changements. Im un peu confus quant à pourquoi il ne fonctionnera pas lorsque le script s'exécute, mais si je fais le ci-dessus, il montre la bonne réponse. Edit: Merci pour les réponses jusqu'à présent les gars. La question que je n'ai pas vraiment sur d'autres façons d'aller à ce sujet (bien que son toujours bon d'apprendre plus de façons d'accomplir une tâche), mais plutôt pourquoi le code ci-dessous ne fonctionne pas quand son exécution comme un script, mais si je recharge l'objet pickle à L'invite après le script a exécuté et puis le tester contre le html, il retournera True s'il n'y a pas eu de changements. Demandé 28 juin à 20:42 Modifier. Je hadnt réalisé que vous cherchiez juste le problème avec votre script. Heres ce que je pense est le problème, suivi par ma réponse originale qui aborde une autre approche au plus grand problème que vous essayez de résoudre. Votre script est un excellent exemple des dangers d'utiliser une couverture sauf déclaration: vous attraper tout. Y compris, dans ce cas, votre sys. exit (0). Im en supposant youre essai bloc est là pour attraper le cas où D: DownloadhtmlString. p n'existe pas encore. Cette erreur est appelée IOError. Et vous pouvez l'attraper spécifiquement avec sauf IOError: Voici votre script plus un peu de code avant de le faire aller, fixé pour votre problème d'exception: En guise de note, vous pouvez envisager d'utiliser os. path pour vos chemins de fichier - it Aidera n'importe qui plus tard qui veut employer votre manuscrit sur une autre plate-forme, et il vous sauve les double-back-slashes laids. Modifier 2. Adapté à votre URL spécifique. Il y a un nombre généré dynamiquement pour les annonces de cette page qui changent à chaque chargement de page. Son droit près de la fin après tout le contenu, donc nous pouvons juste diviser la chaîne HTML à ce point et prendre la première moitié, en rejetant la partie avec le nombre dynamique. Votre chaîne n'est plus un document html valide, si cela était important. Si c'était le cas, vous pouvez supprimer cette ligne ou quelque chose. Il ya probablement une manière plus élégante de faire ceci, - peut-être effacer le nombre avec un regex - mais ceci au moins satisfait votre question. Réponse originale - une autre approche de votre problème. À quoi ressemblent les en-têtes de réponse du serveur Web HTTP spécifie une propriété Last-Modified que vous pouvez utiliser pour vérifier si le contenu a changé (en supposant que le serveur indique la vérité). Utilisez celui-ci avec une requête HEAD comme Uku a montré dans sa réponse, si youd aiment conserver la bande passante et être gentil avec le serveur youre sondage. Et il y a aussi un en-tête If-Modified-Since qui ressemble à ce que vous recherchez peut-être. Si nous les combinons, vous pourriez venir avec quelque chose comme ceci: Vérifiez également ce billet de blog par Stii qui peut fournir une certaine inspiration. Je ne sais pas assez sur ETags pour les avoir mis dans mon exemple, mais son code vérifie pour eux aussi. Hmm, c'est étrange. Il semble fonctionner très bien pour moi: La première fois qu'il s'exécute il dit Créé Nouveau fichier. Et ensuite soit Values ​​Haven39t Changed ou Saving correctement. Je l'ai testé sur un serveur que je contrôle. Quelle est l'URL avec laquelle vous travaillez? Est-ce votre propre ou quelqu'un d'autre? Peut-être que cela est en quelque sorte spécifique à une plate-forme. I39m exécutant linux ici. Ndash Phil Jun 29 12 at 16:51 Semble il doit être l'url que j'ai essayé le vôtre et il fonctionne très bien. La partie étrange est comment il doesn39t travail dans le script, mais fonctionne bien le test manuellement. Voici ce que I39m en utilisant pour l'url stuff: url 39ecal. forexprosecal. phpdurationweekly39 en-têtes data octets (39dataNone39, 39utf-839) urql. request. Request (url, données, en-têtes) réponse urllib. request. urlopen (req) htmlString réponse. Je n'ai pas été entièrement clair sur si oui ou non vous avez voulu juste voir si le site a changé, ou si vous alliez faire plus avec les données de sites Web. Si c'est le premier, certainement hash, comme mentionné précédemment. Voici un exemple fonctionnant (python 2.6.1 sur un mac) qui compare le vieux html complet avec le nouveau html qu'il devrait être facile de modifier ainsi il emploie des hachages ou juste une partie spécifique du site Web, comme vous avez besoin. Espérons que les commentaires et docstrings rendre tout clair. Répondue Jun 28 12 at 22:03 Oops, didn39t voir le modifier à la question d'origine avant l'affichage. Ndash Matthew Adams Jun 28 12 at 22:05 Votre réponse 2017 Stack Exchange, IncLanguage réclamé dans la balise meta HTML doit correspondre à la langue réellement utilisé sur la page Web. Autrement, Ecal. forexpros. fr peut être mal interprété par Google et d'autres moteurs de recherche. Malheureusement, nous ne pouvons pas identifier le langage utilisé sur la page (il existe probablement un mélange de langues, trop peu de texte ou autre) et aucune langue n'est revendiquée dans les balises lthtmlgt ou ltmetagt. Notre système a également découvert que les pages principales d'Ecal. forexpros. fr revendiquaient l'encodage utf-8. L'utilisation de ce format d'encodage est la meilleure pratique que les visiteurs de la page principale de partout dans le monde n'aura aucun problème avec la transcription des symboles. Optimisation du partage social La description de Open Graph n'est pas détectée sur la page principale d'Ecal Forexpros. Le manque de description de Graphique Ouvert peut être contre-productif pour leur présence dans les médias sociaux, car une telle description permet de convertir une page d'accueil de site Web (ou d'autres pages) en postes bien conçus, riches et bien structurés, lorsqu'ils sont partagés sur Facebook et Autres médias sociaux. Par exemple, l'ajout de l'extrait de code suivant dans la balise HTML ltheadgt vous aidera à représenter cette page Web correctement dans les réseaux sociaux:


No comments:

Post a Comment