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);
}
}
Sie haben APIs für diesen Zweck – gonephishing
Google "Selen". –
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