python lxml etree applet Informationen von Yahoo

8

Yahoo Finance hat ihre Website aktualisiert. Ich hatte ein lxml / etree-Skript, mit dem die Analystenempfehlungen extrahiert wurden. Jetzt aber sind die Analystenempfehlungen da, aber nur als Grafik. Sie können ein Beispiel auf dieser Seite sehen. Das Diagramm mit der Bezeichnung Recommendation Trends in der rechten Spalte zeigt die Anzahl der Analystenberichte, die starkes Kaufen, Kaufen, Halten, Underperform und Verkaufen zeigen.

Meine Vermutung ist, dass Yahoo in der nächsten Zeit ein paar Anpassungen an der Seite vornehmen wird, aber ich habe mich gefragt, ob solche Daten in irgendeiner vernünftigen Weise extrahierbar sind?

  1. Ich meine, gibt es eine Möglichkeit, die Grafik dazu zu bringen?
  2. Selbst wenn man erfolgreich wäre, würde es einen vernünftigen Weg geben, die Daten aus der Grafik zu extrahieren?

Ich habe die Quelle so verstanden:

%Vor%

und dann finden Sie die Daten im HTML-Baum. Aber offensichtlich ist das jetzt unmöglich.

    
Dr Xorile 17.08.2016, 22:29
quelle

2 Antworten

2

Da Kommentare sagen, dass sie zu ReactJS gewechselt sind, ist lxml nicht mehr auf dem Punkt, da auf der HTML-Seite keine Daten vorhanden sind. Jetzt müssen Sie sich umsehen und den Endpunkt finden, an den sie die Daten ziehen. Im Falle von Empfehlung Trends ist es da.

%Vor%

Die Ausgabe sieht so aus.

%Vor%

So suchen Sie nach Daten

Was ich getan habe, war grob:

  1. Suchen Sie nach einem eindeutigen Token im Zielwidget (z. B. Diagrammwert oder Trend Zeichenfolge)
  2. Öffnen Sie die Quelle der Seite (verwenden Sie einen Formatierer für HTML und JS, z. B. dies )
  3. Suchen Sie dort nach dem Token (auf der Seite drei ist der Abschnitt, der mit /* -- Data -- */ beginnt)
  4. Suchen Sie nach ".js", um Skript-Tags (oder programmatische Einschlüsse, z. B. require.js) zu erhalten, und suchen Sie dort nach Token
  5. Öffnen Sie die Registerkarte Netzwerk in Firebug oder Chromium Developer Tools und überprüfen Sie XHR-Anfragen
  6. Verwenden Sie dann Postman (oder locken Sie, wenn Sie Terminal bevorzugen), um zusätzliche Parameter zu entfernen und zu sehen, wie der Endpunkt reagiert
saaj 01.09.2016, 16:07
quelle
4

Die Seite ist ziemlich dynamisch und beinhaltet eine Menge Javascript in einem Browser. Um dem Ratschlag von @ Padraic zum Wechsel zu selenium zu folgen, hier ein vollständiger Beispiel-Arbeitscode, der einen Monat Trendwörterbuch am Ende. Die Werte jedes Balkens werden als Proportionen der Balkenhöhen berechnet:

%Vor%

Drucke:

%Vor%

Die total -Werte sind Beschriftungen, die Sie oberhalb jeder Leiste sehen.

Ich hoffe, das wäre zumindest ein guter Anfang für Sie. Lassen Sie es mich wissen, wenn Sie möchten, dass ich einen Teil des Codes ausführe oder zusätzliche Informationen benötige.

    
alecxe 27.08.2016 06:28
quelle