Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : (JavaScript) - Mit Javascript erzeugten Content abfangen und crawlen



Uranjitsu
17.12.2016, 14:56
Hallo zusammen,

ich versuche hier einen Teil abzugangen: https://safelinking.net/RcAPA6B

Ruft man den Link auf, wird die Seite via Javascript aufgebaut.
Schaut man sich nun den "Quelltext" an, wird man sehen, dass dieser kaum Informationen enthält bzw. nicht diese, die man abfangen möchte.

In diesem Beispiel, möchte ich aber einen bestimmten Bereich abfangen (Rot makiert):
Mittels "Auswahl Quelltext" oder "Element untersuchen" wird dieser angezeigt.



<div class="innerAll bg-gray border-bottom">
<i class="fa fa-cloud"></i> Status:
<span class="label ng-binding label-primary" ng-class="'label-' + (info.status|linkClass)">UNKNOWN</span>
<span ng-show="info.lastChecked" class="ng-binding">Last checked 12/17/16 1:14 PM UTC</span>
<a ng-show="info.isMine" class="label label-danger ng-hide" ui-sref="ucp.form.linkDetails({hash:linkHash})" href="/ucp/links/RcAPA6B">MANAGE THIS LINK</a>
</div>


Wie oben beschrieben, wird der nötoge Quelltext dann beim cUrl oder file_get_content nicht angezeigt.
Hat jemand eine Idee, wie man an den letztendlich aufgebauten Code herankommt?

LG

xmasta4000
17.12.2016, 16:07
Das "sauberste", eine Lösung die auch bei Änderungen / anderen Seiten funktioniert, wäre das Einbinden von HtmlUnit (http://htmlunit.sourceforge.net/) oder der Erweiterung V8js (http://php.net/manual/en/book.v8js.php) für PHP. Habe jedoch bisher mit keinen von beiden Libs gearbeitet.

Alternativ ist das sehr gut mit cheerio (https://github.com/cheeriojs/cheerio) lösbar.Jedoch auf node.js basis. Hab ich selbst getestet. Geht gut.

Update:
- gerade gemerkt das es auch jsdom (https://github.com/tmpvar/jsdom) tut. Du brauchst ja kein jQuery. Da ist cheerio überdimensioniert
- die API würde ich einfachheit halber vorziehen (habe nicht gewusst , dass es eine API gibt)

Zarroc
17.12.2016, 19:24
Da du ja eigentlich nur den Status wissen willst, würde ich deren Checker benutzen:

https://safelinking.net/check?link=https://safelinking.net/RcAPA6B
Gibt dies zurück:

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<response>
<link_status>Unknown</link_status>
<title>uploaded.net</title>
<host>Ul.to</host>
</response>

Uranjitsu
17.12.2016, 20:52
Der Checker ist mir zu langsam. Curlen ginge schneller, bisher setze ich den Checker ein.