編集:私はFacebookのAPIを探していません!私は単に例としてFacebookを使っています。私はブラウザに、APIを持たない可能性のある異なるウェブサイト上でアクションを実行させるつもりです。一連のアクションを実行するためにウェブブラウザをプログラミングする方法は?
Facebookにログインし、友達リストを検索し、プロフィールのそれぞれを訪れ、各投稿の日付+テキストを抽出し、ファイルに書き込むプログラムを作成したいとしましょう。
私はアルゴリズムがどのように機能すべきか考えています。しかし、私は自分のコードとブラウザ自体をどのように結びつけるのか全く分かりません。
私はJavaプログラマです。Javaのpesudoコードは、ブラウザオブジェクトを作成して現在のページのコンテンツをHTMLコードに変換してデータを解析できるようにすることが非常に想像されます。私は以下のようなコードを提供しました。
しかし、私はそれを行うべきである正しい方法ですか?そうであれば、どこでWebブラウザオブジェクトを見つけることができますか?コンテンツを「読む」ために使用できるパーサーはありますか? 「好き」ボタンをクリックするなど、javascriptを実行するにはどうすればよいですか?
他の方法がありますか? GUI版はありますか?次に、X/Yピクセル位置に移動して何かをクリックするようにプログラムに指示することができます。あるいは、私のFireFoxの中に直接コードを書いてそこから実行する方法がありますか?
私は本当にこれを行う方法について手がかりがありません。どんな助けでも大歓迎です!ありがとう!
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);
}
}
この目的のAPIは – gonephishing
Google "selenium"です。 –
これにはブラウザの自動化ツールを使用して、アクティブなWebブラウザを効果的に制御し、その中のDOMとやりとりすることができます。しかし、Facebookから情報を入手しようと思っているのであれば、そのAPIを使わないのはなぜですか?または、少なくともコード内のHTTPリクエストを作成し、レスポンスを解析します。自動化されたタスクを実行するために手動ブラウザを制御することは少し不必要なようです。 – David