2016-05-20 3 views
2

EDIT: Ich bin nicht auf der Suche nach Facebook-APIs! Ich benutze einfach Facebook als Beispiel. Ich beabsichtige, meinen Browser dazu zu bringen, Aktionen auf verschiedenen Websites auszuführen, die wahrscheinlich keine APIs haben.Wie programmiere ich einen Webbrowser, um eine Reihe von Aktionen auszuführen?

Angenommen, ich möchte ein Programm erstellen, das sich bei Facebook anmeldet, meine Freundesliste durchsucht, jedes einzelne Profil aufruft, Datum und Text jedes Beitrags extrahiert und in eine Datei schreibt.

Ich habe eine Idee, wie der Algorithmus funktionieren sollte. Aber ich habe absolut keine Ahnung, wie ich meinen Code mit dem Browser selbst verbinden soll.

Jetzt bin ich ein Java-Programmierer, also würde ich mir sehr vorstellen, dass der pesudo-Code in Java wäre, ein Browser-Objekt zu erstellen und dann den Inhalt der aktuellen Seite in HTML-Code umzuwandeln, damit die Daten analysiert werden können. Ich habe unten einen Beispielcode angegeben, von dem ich denke, dass er so aussehen sollte.

Aber ist das der richtige Weg, dass ich es tun sollte? Wenn ja, wo finde ich ein Webbrowser-Objekt? Gibt es Parser, mit denen ich den Inhalt "lesen" kann? Wie kann ich Javascript ausführen, indem ich auf "Gefällt mir" klicke?

Oder gibt es andere Möglichkeiten, es zu tun? Gibt es eine GUI-Version und dann kann ich einfach das Programm befehlen, zur X/Y-Pixelposition zu gehen und auf etwas zu klicken. Oder gibt es eine Möglichkeit, den Code direkt in mein FireFox zu schreiben und von dort aus zu starten?

Ich habe wirklich keine Ahnung, wie man das macht. Jede Hilfe würde sehr geschätzt werden! Vielen Dank!

Browser browser = new Browser(); 
browser.goToUrl("http://facebook.com"); 

//Retrieve page in HTML format to parse 
HtmlPage facebookCom = browser.toHtml(); 

//Set username & password 
TextField username = facebookCom.getTextField("username"); 
TextField password = facebookCom.getTextField("password"); 
username.setText("user123"); 
password.setText("password123"); 
facebookCom.updateTextField("username", username); 
facebookCom.updateTextField("password", password); 

//Update HTML contents 
browser.setHtml(facebookCom); 

// Click the login button and wait for it to load 
browser.getButton("login").click(); 
while (browser.isNotLoaded()) { 
    continue; 
} 

// Click the friends button and wait for it to load 
browser.getButton("friends").click(); 
while (browser.isNotLoaded()) { 
    continue; 
} 

//Convert the current page (Friends List) into HTML code to parse 
HtmlPage facebookFriends = browser.toHtml(); 

//Retrieve the data for each friend 
ArrayList<XMLElement> friendList = facebookFriends.getXmlElementToArray("friend"); 
for (XMLElement friend : friendList) { 
    String id = friend.getId(); 

    //Visit the friend's page 
    browser.goToUrl("http://facebook.com/" + id); 
    while (browser.isNotLoaded()) { 
     continue; 
    } 

    //Retrieve the data for each post 
    HtmlPage friendProfile = browser.toHtml(); 
    ArrayList<XMLElement> friendPosts = friendProfile.getXmlElementToArray("post"); 

    BufferedWriter writer = new BufferedWriter(new File("C:/Desktop/facebook/"+id)); 

    //Write the date+text of every post to a text file 
    for (XMLElement post : friendPosts) { 
     String date = post.get("date"); 
     String text = post.get("text"); 

     String content = date + "\n" + text; 
     writer.append(content); 
    } 
} 
+1

Sie haben APIs für diesen Zweck – gonephishing

+0

Google "Selen". –

+0

Sie können hierfür Browser-Automatisierungstools verwenden, um einen aktiven Webbrowser effektiv zu steuern und mit dem darin enthaltenen DOM zu interagieren. Aber wenn Sie nur nach Informationen von Facebook suchen, warum nicht ihre API verwenden? Oder zumindest Code-HTTP-Anfragen erstellen und die Antworten parsen. Die Steuerung eines manuellen Browsers zur Durchführung automatisierter Aufgaben scheint unnötig zu sein. – David

Antwort

1

Ich denke, Sie denken darüber falsch. Sie möchten nicht wirklich ein Programm schreiben, um den Bildschirm über den Browser zu verschrotten. Es sieht so aus, als könnten Sie die Vorteile von Facebooks Rest API nutzen und nach den Daten suchen, die Sie suchen. Ein Link einen Benutzer Beitrag über Rest api zu bekommen:

https://developers.facebook.com/docs/graph-api/reference/v2.6/user/feed

Sie könnten ihren Benutzer-ID von diesem Endpunkt erhalten:

https://developers.facebook.com/docs/graph-api/reference/friend-list/

dann den Benutzer-IDs in den ersten Ruhe Endpunkt Stecker, wurde verlinkt. Sobald Sie Ihre Daten korrekt über die Rest-API erhalten, ist es ziemlich trivial, diese Daten in eine Datei zu schreiben.

+0

Danke! Aber ich verwende hier einfach Facebook als Beispiel. Ich beabsichtige dies für Websites ohne APIs zu tun. – user2296609

+0

Ah, das könnte mehr sein, wonach Sie suchen: https://jsoup.org/cookbook/extracting-data/dom-navigation – cstopher

Verwandte Themen