Seite 1 von 1

Ein kleiner Bott für Facebook

Verfasst: Sonntag 2. Oktober 2011, 12:05
von Satzende
Hallo

erstmal die Hintergrund Story. Meine Freundin Spielt auf Facebook gerne citty ville. ab und an braucht man da aber sogenannte Nachbarn und so musste auch ich das spielen. Nun bekommt man als Neuigkeiten immer anfragen die dann beantwortet werden wollen. Da reicht nun ein klick und da kam die idee das ein Bott nicht schlecht wäre.

ich benutze dazu die Mechanize Libery. Einlogen klappt schon wunderbar :D
Nun muss ich aber noch Auf Neuigkeiten Klicken, die aber nicht als link zu finden sind.
Hab mir alle links mit

Code: Alles auswählen

for lin in br.links():
    print(lin.text)
    
ausgeben lassen.

Hab dazu noch Firebug geholt und der sagt :

Code: Alles auswählen

<li id="navItem_app_4748854339" class="sideNavItem stat_elem open selectedItem">
<div class="buttonWrap">
<a class="item clearfix" data-gt="{"bmid":"4748854339","count":"0","rank":"2"}" title="" href="/">
<div class="rfloat">
<div>
<span class="imgWrap">
<i class="img sp_9x0spv sx_fc8e26"></i>
</span>
<div class="linkWrap noCount">Neuigkeiten</div>
</div>
</a>
</li>
Komm nun einfach nicht weiter

Re: Ein kleiner Bott für Facebook

Verfasst: Sonntag 2. Oktober 2011, 14:14
von snafu
Plattformen wie Facebook arbeiten naturgemäß viel mit JavaScript (dynamische Inhalte und so). Mechanize versteht aber kein JavaScript, bzw führt solchen Code nicht aus. Du solltest besser auf eine browserbasierte Lösung zurückgreifen. Es gibt Tools, die quasi für dich im Browserfenster die nötigen Klicks ausführen.

(Alles natürlich unter dem Disclaimer, dass Bots meistens durch entsprechende Nutzungsbedingungen verboten sind. Ich weiß nicht, wie Facebook das handhabt...)

Re: Ein kleiner Bott für Facebook

Verfasst: Dienstag 4. Oktober 2011, 14:39
von Dav1d
Und meistens läuft das JavaScript auf einen AJAX-Request raus, welchen man mit Python und mechanize nachbauen kann. Generell hilft erstmal JS zu deaktivieren und schauen welche Daten alle geladen werden, wenn die Daten, die man braucht dabei sind ist man eh schon gut weggekommen, wenn nicht am besten mit einem Addon nur bestimmte JS-Skripte zulassen bzw. alle JS-Calls debuggen Chrom(e|ium) hat eine schöne JS-Debugging-Konsole. Da JS, auch i-wie an diese Daten kommen muss, werden früher oder später auch Requeste an interne APIs gesendet (welche oftmals so was schönes wie JSON zurückgeben), diese Requeste musst du dann manuell absetzen (browser.open). Oder du machst das wie snafu meinte.