1

クラスの 1 つがキューの使用を練習し、履歴書を作成するための Twitter ボットを作成しています。

ボットで paper.li ニュースレターから Twitter ハンドルを取得し、ユーザーにツイートを送信するようにします。

これがウェブページの例です。 http://paper.li/profkane/1335985326

私の推論は、もともと Web ページのリンクを取得し、ページ ソースを取得して @twitterhandle を参照し、それらをキューに追加して、後でメッセージを作成するときに使用することでした。

ページのソースを調べましたが、Web ページのどこにも Twitter の名前が見つかりません。これはJavaでまだ可能ですか?

4

2 に答える 2

1

JavaScript をサポートするライブラリを使用する必要があります。これには、ブラウザの動作を複製するための優れたライブラリであるHtmlUnitを使用します。

JavaScript を使用してページにアクセスする方法の簡単な例については、以下のこの質問からの私の修正された回答を参照してください。

まず、彼らの Web ページ ( http://htmlunit.sourceforge.net/ ) をチェックして、htmlunit を起動して実行します。必ず最新のスナップショット (これを書いているときは 2.12) を使用してください。

次の設定を試して、ほとんどすべての障害を無視します。

WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17);
webClient.getOptions().setRedirectEnabled(true);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getCookieManager().setCookiesEnabled(true);

次に、ページをフェッチするときは、バックグラウンド JavaScript を待つなど、ページで何かを行う前に、バックグラウンド Javascript を待つようにしてください。

//Get Page
HtmlPage page1 = webClient.getPage("https://login-url/");

//Wait for background Javascript
webClient.waitForBackgroundJavaScript(10000);

//Get full page _after_ javascript has rendered it fully
System.out.println(page1.asXml());    

この基本的な例がお役に立てば幸いです。

HtmlUnit を使用して、ブラウザーで実行できるほとんどすべてのことをプログラムで実行できます。

于 2013-03-02T09:04:46.830 に答える
0

スクレイピングに関する限り、ページ全体をスクレイプしてTwitter ID(またはハンドル)を探すことができます。サンプルページを確認したところ、ハンドル自体は見つかりませんでしたが、Twitterアイコンにユーザーのアカウントへのリンクがあります。これを使用してハンドルを取得できます。Javaでライブラリをスクレイピングする場合は、JSOUPを試してみてください。

于 2013-03-02T09:07:35.593 に答える