Ecal Forexpros


Ich möchte ein Skript ausführen, das die folgende Seite täglich kratzt (wenn das Skript ausgeführt wird, kratzt es den Kalender für diesen Tag) (das Äquivalent zum Klicken auf die tägliche Schaltfläche) Ich möchte alle Tage dataevents für diesen bestimmten Tag zu extrahieren, und Filter für die relevanten Währungen (falls zutreffend) und um dann eine Art von Alert oder Pop-up 10 Minuten vor jedem dieser Ereignisse stattfinden. Ich verwende die unten Code so weit, um die Web-Seite zu kratzen, und dann viewprint die Variable html, aber nicht finden können, die Kalender-Informationen, die ich benötige. Ich denke, der beste Weg, um Daten von Web-Seiten zu kratzen ist, BeautifulSoup verwenden. Ist hier ein schnelles Skript, das die Daten erhält, die Sie wünschen. Um Ihnen einige Hinweise, wie man ein Problem wie dieses in der Zukunft zu lösen, Ive geschrieben die Schritte, die ich bei der Lösung Ihres Problems. Ich hoffe es hilft. Ich öffnete die Webseite in Chrome, rechtsklickte und ausgewählte Inspektionselement. Found the iframe mit der Info in, indem Sie in der Registerkarte Elemente, und öffnete die URL. Untersucht diese Seite auch, und dachte, dass alle Elemente mit den Daten lttrgt Elemente, und hatte die Klasse ecbg1tr oder ecbg2tr. Ich wusste von früheren Begegnungen mit BS, dass es z. B. alle tr-Elemente mit der Klasse ecbg1tr finden kann, indem man soup. findall (tr,) verwendet. Meine erste aber war es, erste Schleife über diese Elemente, und dann Schleife über die ecbg2tr Elemente. Dann dachte ich, dass vielleicht BS war schlau genug, um regexps als Eingabe akzeptieren, so dass ich ihre Dokumente überprüft. Und es schien, dass sollte nicht ein Problem sein. Nach dem Rezept aus den docs habe ich dann versucht, die einfache regexp ecbg12tr zu verwenden. Ca-ching beantwortet Jan 9 14 um 1:00 Dies ist wirklich schöne Lösung, ich benutze es jetzt für meine grundlegende Analyse, ich habe andere Werkzeuge wie ystockquote Python-Bibliothek, die ich mit einigen meiner Code verwendet, um einige technische Analyse auf Mein Vorrat ist dieses nett und kundengerecht zum max Steinar Lima. thank Sie ndash toufikovich Ihre Antwort 2017 Stapel-Austausch, IncBasically Im, das versucht, irgendeinen Code (Python 3.2) laufen zu lassen, wenn ein Wert auf einer Web site ändert, andernfalls Warten Sie ein wenig und überprüfen Sie es später. Zuerst dachte ich, ich könnte nur speichern Sie den Wert in einer Variablen und vergleichen Sie es mit dem neuen Wert, der geholt wurde das nächste Mal das Skript ausgeführt würde. Aber das schnell rannte in Probleme, da der Wert überschrieben wurde, wenn das Skript erneut ausgeführt und initialisiert diese Variable. Also dann habe ich versucht, nur Speichern der HTML-Datei der Webseite als eine Datei und vergleicht sie dann mit der HTML-Datei, die beim nächsten Mal aufgerufen werden würde, rannte das Skript. Kein Glück dort entweder, da es immer falsch kam, auch wenn es keine Veränderungen gab. Als nächstes war Beizen der Webseite und dann versuchen, es mit dem HTML-Vergleich zu vergleichen. Interessant, dass didnt Arbeit entweder innerhalb des Skripts. Wenn ich die Datei pickle. load (öffnen (D: DownloadhtmlString. p, rb)), nachdem das Skript ausgeführt hat und dann Datei html, zeigt es True, wenn es keine Änderungen gab. Ich bin ein bisschen verwirrt, warum es nicht funktionieren, wenn das Skript läuft, aber wenn ich die oben genannten zeigt es die richtige Antwort. Edit: Vielen Dank für die Antworten so weit Jungs. Die Frage, die ich habe, war nicht wirklich über andere Weisen, über dieses zu gehen (obgleich sein immer gut, mehr Weisen zu erlernen, eine Aufgabe zu erlernen) aber eher, warum der untenstehende Code nicht arbeitet, wenn sein Lauf als Skript, aber, wenn ich das pickle Objekt an lade Die Aufforderung, nachdem das Skript ausgeführt wurde und testen Sie es gegen die html, wird es True zurückgeben, wenn es keine Änderungen gab. Gefragt Jun 28 12 at 20:42 Bearbeiten. Ich hatte nicht realisiert Sie waren nur auf der Suche nach dem Problem mit Ihrem Skript. Heres, was ich denke, ist das Problem, gefolgt von meiner ursprünglichen Antwort, die einen anderen Ansatz für die größere Problem youre versuchen, zu lösen Adressen. Ihr Skript ist ein großartiges Beispiel für die Gefahren der Verwendung einer Decke außer Aussage: Sie fangen alles. Einschließlich, in diesem Fall, Ihre sys. exit (0). Im Annahme youre versuchen Block ist es, den Fall zu fangen, wo D: DownloadhtmlString. p noch nicht vorhanden ist. Dieser Fehler heißt IOError. Und Sie können es speziell mit Ausnahme IOError: Hier ist Ihr Skript und ein bisschen Code vor, um es zu gehen, für Ihre ausgenommen Problem behoben: Als eine Seite beachten, könnten Sie erwägen, os. path für Ihre Dateipfade - it Wird jedem helfen, später, die Ihr Skript auf einer anderen Plattform verwenden möchten, und es spart Ihnen die hässlichen Doppel-Back-Schrägstriche. Bearbeiten 2. Angepasst für Ihre spezifische URL. Es gibt eine dynamisch generierte Zahl für die Anzeigen auf dieser Seite, die sich mit jeder Seitenbelastung ändert. Sein Recht nahe dem Ende nach dem ganzen Inhalt, also können wir den aufgeteilten HTML-String an diesem Punkt und nehmen die erste Hälfte und verwerfen das Teil mit der dynamischen Zahl. Ihre Zeichenfolge ist kein gültiges HTML-Dokument mehr, wenn das wichtig war. Wenn es war, könnten Sie nur diese Zeile oder so etwas. Es ist wahrscheinlich eine elegantere Art, dies zu tun, vielleicht löschen Sie die Nummer mit einer Regex - aber diese zumindest erfüllt Ihre Frage. Ursprüngliche Antwort - ein alternativer Ansatz für Ihr Problem. Wie sehen die Antwort-Header vom Webserver aus? HTTP gibt eine Last-Modified-Eigenschaft an, mit der Sie überprüfen können, ob sich der Inhalt geändert hat (vorausgesetzt der Server sagt die Wahrheit). Verwenden Sie diese mit einer HEAD-Anfrage, wie Uku in seiner Antwort gezeigt, wenn Sie möchten, um Bandbreite zu sparen und nett sein, um den Server youre Abfrage. Und es gibt auch eine If-Modified-Since Header, die wie das, was Sie suchen könnte klingen. Wenn wir sie kombinieren, könnten Sie kommen mit so etwas wie dieses: Auch lesen Sie in diesem Blog-Post von Stii, die einige Inspiration bieten kann. Ich weiß nicht genug über ETags, um sie in meinem Beispiel zu setzen, aber sein Code überprüft für sie auch. Hmm, das ist seltsam. Es scheint, adaequat für mich zu funktionieren: Das erste Mal, es läuft es sagt, erstellt neue Datei. Und anschließend entweder Values ​​Haven39t geändert oder richtig gespeichert. Ich testete es auf einem Bediener, den ich kontrolliere. Was ist die URL, die Sie mit arbeiten Ist es Ihre eigene oder jemand anderes39s Vielleicht ist dies irgendwie plattformspezifisch. I39m laufen linux hier. Ndash Phil Jun 29 12 at 16:51 Scheint es muss die URL sein, wie ich Ihr versucht habe und es funktioniert gut. Der seltsame Teil ist, wie es doesn39t Arbeit im Skript, sondern funktioniert gut manuell testen. Here39s was I39m mit für die URL Zeug: url 39ecal. forexprosecal. phpdurationweekly39 Header Datenbytes (39dataNone39, 39utf-839) erf urllib. request. Request (url, Daten, Header) Antwort urllib. request. urlopen (erf) htmlString Antwort. read () ndash Jason White 29. Juni 12 um 17:06 Uhr war ich nicht ganz klar ist, ob oder nicht wollte Sie nur sehen, ob die Webseite geändert hat, oder wenn Sie wollten mehr mit den Websites Daten zu tun. Wenn es das erstere, definitiv Hash, wie bereits erwähnt. Hier ist eine Arbeits (Python 2.6.1 auf einem Mac) Beispiel, das die komplette alte html mit dem neuen HTML vergleicht sollte es leicht sein, zu modifizieren, so dass es verwendet Hashes oder einfach nur einen bestimmten Teil der Website, wie Sie benötigen. Hoffentlich machen die Kommentare und Docstrings alles klar. Beantwortet Jun 28 12 at 22:03 Oops, didn39t sehen die Bearbeitung der ursprünglichen Frage vor der Veröffentlichung. ndash Matthew Adams 28. Juni 12 um 22:05 Uhr Ihre Antwort 2017 Stapel von Exchange, behauptete IncLanguage in HTML-Meta-Tag sollte die Sprache auf der Webseite verwendet tatsächlich entsprechen. Andernfalls kann Ecal. forexpros. fr von Google und anderen Suchmaschinen fehlinterpretiert werden. Leider können wir keine Sprache auf der Seite verwendet identifizieren (wahrscheinlich gibt es eine Mischung aus Sprachen, zu wenig Text oder etwas anderes) und keine Sprache entweder in lthtmlgt oder ltmetagt Tags in Anspruch genommen wird. Unser System hat auch herausgefunden, dass Ecal. forexpros. fr Hauptseiten behaupteten Encoding ist utf-8. Die Verwendung dieser Kodierung Format ist die beste Praxis, da die Hauptseite Besucher aus der ganzen Welt haben keine Probleme mit Symbol-Transkription. Social Sharing-Optimierung Open Graph Beschreibung wird nicht auf der Hauptseite von Ecal Forexpros erkannt. Der Mangel an Open Graph Beschreibung kann für ihre Social-Media-Präsenz kontraproduktiv sein, da eine solche Beschreibung ermöglicht eine Internet-Homepage Umwandlung (oder andere Seiten) in gut aussehend, reich und gut strukturierte Beiträge, wenn es auf Facebook geteilt wird und Anderen sozialen Medien. Beispielsweise wird das Hinzufügen des folgenden Code-Snippets in das HTML-ltheadgt-Tag dazu beitragen, diese Webseite korrekt in sozialen Netzwerken darzustellen:

Comments

Popular posts from this blog

Best Stock Call Optionen

Handelsstrategien Mit Futures

Forex Icici Preise