Bestimmte Infos einer Webseite auslesen?

Yasha

Commander
Mitglied seit
13.05.2008
Beiträge
158
Renomée
0
Huhu,
ich versuch mal mein Vorhaben zu erklären :)

Ich möchte die User Online Liste aus einer Webseite auslesen. Sinn und zweck ist halt, dass ich mir die Box irgendwie auf dem zweiten Display anzeigen lassen kann. Halt ohne das der Browser dabei offen sein muss. Dummerweise hab ich überhaupt keinen Plan von HTML und co.

Das erste Problem ist, dass man sich natürlich auf der Seite einloggen muss um die User Online Liste zu sehen. Meine erste Idee war urlreqeust zu benutzen um die HTML Seite davon zu bekommen. Die wollte ich dann auslesen und mir Anzeigen lassen. Dummerweise ist der Teil, der für die User Online zuständig ist sinnlos. Ist nur Java Script. Dort tauchen keine Klarnamen bzw Nicks auf.

Hier mal der Teil für die Box
<div id="friendsbox" class="sbox" style="margin-right:0">
<div style="width:100%">
<table width="100%" cellspacing="0"><tr><td>
<select id="frtype" name="frtype">
<optgroup label="Anzeige"><option value="1" selected="selected">Gerade online</option>
<option value="0">Alle Freunde</option>
</optgroup><optgroup label="Funktionen"><option value="edit">Bearbeiten...</option>
<option value="invite">Freunde einladen...</option>
<option value="notes">Notizen...</option>
</optgroup></select>
</td>
<td style="text-align:right" id="frviewlinks">
<a href="#" id="frview0" style="cursor:pointer" title="Liste"><img src="http://im.p1x.de/static/image/icon/view-0-hi.png" width="18" height="16" alt="Liste" style="vertical-align:bottom"></a>
<a href="#" id="frview1" style="cursor:pointer" title="Kleine Fotos" ><img src="http://im.p1x.de/static/image/icon/view-1-hi.png" width="18" height="16" alt="Kleine Fotos" style="vertical-align:bottom"></a>
<a href="#" id="frview2" style="cursor:pointer" title="Große Fotos" ><img src="http://im.p1x.de/static/image/icon/view-2-hi.png" width="18" height="16" alt="Große Fotos" style="vertical-align:bottom"></a>
</td></tr></table></div>
<div style="padding: 0.5em 0 0 0">
<div style="padding-bottom: 0.5em">
<div id="friendslist">
<script>
var stillLoading=true;var lastWrite;
</script>
<script type="text/javascript" src="/static/js/displayfriends.js?v=2012-09-05"></script>
<script>
var fr;try{fr=top.Friends;}catch(_){}
function interFriendsUpdate(){try{if(window.top&&top.unloading)return;if(top.Friends){if(top.Friends.loaded&&top.Friends.lastUpdate>lastWrite){rewriteFriends();}
setTimeout(interFriendsUpdate,2000);}}catch(_){}};
if(!window.rewriteFriends){document.writeln('Ladefehler in deinem Internet-Browser - bitte lade diese Seite neu um die Freundesliste zu sehen.');}else{if(window.top&&!fr){$.getJSON('/api/friends',{'session':'31353bjDpK5FNzloOS7qhAXhMMQlT-4RGw5Dmtf_Mhdw8474265','photo':1,'utf8':1},function(d){tmpfriends=d;rewriteFriends();});}
else if(window.top&&fr&&fr.loaded){if(fr.stillValid()){rewriteFriends(1);}else{fr.load(rewriteFriends);}}else{var checkFriends=setInterval(function(){try{if(window.top&&top.Friends&&top.Friends.loaded){if(checkFriends!=null)clearInterval(checkFriends);checkFriends=null;rewriteFriends();}}catch(e){}},1000);}
if(stillLoading){document.write("<div>Freundesliste lädt...<\/div>");}
if(fr){setTimeout(interFriendsUpdate,2000);}}
</script></div></div>
</div>
<noscript>
Die Freundesliste funktioniert nur mit aktiviertem JavaScript!
</noscript>
</div>

Wie kann ich an die Liste kommen? Ein paar Stichworte wonach ich googeln muss währen hilfreich :)
 
Das ist für dich sogar gut, da die Freundesliste per AJAX als JSON nachgeladen wird. Du musst also kein HTML parsen um an die Daten zu kommen, sondern kannst direkt das JSON verwenden.

Der Aufruf läd die Daten:
Code:
$.getJSON('/api/friends',{'session':'31353bjDpK5FNzloOS7qhAXhMMQlT-4RGw5Dmtf_Mhdw8474265','photo':1,'utf8':1}, [...]);
Die URL sieht in dem Fall dann so aus:
Code:
http://example.com/api/friends?session=31353bjDpK5FNzloOS7qhAXhMMQlT-4RGw5Dmtf_Mhdw8474265&photo=1&utf8=1
Die Session wird natürlich nicht unbegrenzt gültig sein. Du musst also eine Möglichkeit finden dich per Skript anzumelden um eine neue Session zu bekommen.

Das musst du aber nur beim ersten mal machen, also bitte nicht alle x Minuten neu anmelden. Je nach Software kann das eine ziemlich aufwendige Angelegenheit sein und so den Server mehr als nötig belasten.

Gruß,
Max
 
Danke, so bekomme ich schon mal eine Liste angezeigt. Jetzt heißt es nur noch abwarten bis irgendwer Online kommt. Dann sollte sich bei der Liste ja irgendwas ändern. Zur Zeit tauchen einfach nur die Leute auf die man auf der Freundesliste hat. Und da keiner da ist, gibt es keinen Status dazu, das heißt bei allen steht "0" ich nehme mal an, dass soll den Status für da oder nicht da wieder geben. Aber ich warte mal ab, bis jemand da ist.


Ok, meine Vermutung war richtig. Sobald jemand Online ist wird aus der 0 eine 1. Damit lässt sich sicher etwas anfangen :)
 
Zuletzt bearbeitet:
Zurück
Oben Unten