2015-07-03 4 views
5

So möchte ich die ‚Kaufen Preis‘ integer von dieser URL kratzen: https://rsbuddy.com/exchange?id=5502versteckte Teile in HTML-Quellcode, während Schaben (Python)

Aber wenn ich auf den Quellcode schauen, kann ich nicht diejenigen erreichen Preise. Weder BeautifulSoup Schaber. Dies ist der Ausgang von BeautifulSoup:

<div class="col-md-7" id="buy-price"> 
    --- 
</div> 

Aber wenn ich Element untersuchen "Chrom mit, ich, dass der Preis tatsächlich Uhr Lage zu sehen:

<div id="buy-price" class="col-md-7">29,990 gp</div> 

Warum ist der Teil des Codes" versteckt'? Ist es einfach, weil sie nicht wollen, dass Leute von ihrer Website kratzen? Gibt es eine Möglichkeit, dies zu umgehen?

Vielen Dank im Voraus

EDIT: fand ich die Antwort durch die Javascript-Traffic-Tracking der Chrom-Tools. Offenbar obwohl api.rsbuddy.com du nichts nicht geben, tut es die api verwenden: https://api.rsbuddy.com/grandExchange?a=guidePrice&i=5502

Antwort

1

Die Preise werden vermutlich dort durch JavaScript gesetzt wird. Wahrscheinlich verwenden sie eine Art von AJAX, um die Preise zu bekommen. Sie müssen ihr JavaScript untersuchen, um die gewünschten Daten zu erhalten.

Nur zur Klarstellung, es ist nicht "versteckt" per se, es ist einfach nicht im HTML. Wenn Sie das inspect-Element überprüfen, sieht es sich das Dokument an, das aus dem HTML-Code besteht, an dem es gestartet wurde, und allen Änderungen, die das JavaScript daran vorgenommen hat.

+0

Ich sehe, das erklärt, danke. Glauben Sie, dass ich diese Preise finden könnte, wenn ich tiefer in den JS-Code einsteigen würde? – seb

+0

Nun, ich glaube nicht, dass Sie die Preise im JS-Code finden werden. Angenommen, ich bin korrekt und die JS verwendet AJAX, wenn Sie tief genug graben, sollten Sie in der Lage sein zu finden, welche http-Adresse sie stammen (und diese Adresse kann automatisch generiert werden basierend auf dem Namen/id/w/e). – CrazyCasta

+0

Danke. Ich bat die Entwickler, mir dabei zu helfen. Wenn jemand wüsste, ob es möglich ist, wären es sie :) – seb

3

Wenn bestimmte Teile der Seite über JavaScript eingefügt werden, verwenden Sie am besten so etwas wie selenium mit PhantomJS als Treiber.

Die Python-Bindings sind sehr einfach zu benutzen und dies ermöglicht die Ausführung von JavaScript im Browser und Sie können die Preise von dort aus abrufen.

Lassen Sie mich wissen, wenn Sie weitere Informationen wünschen, und ich würde glücklich sein, zu helfen.