0

Jsoup を使用して developers.amazon.com に接続しようとしています。

これが私のコードです:

Map<String, String> get_All_InputFields(Document loginPage) 
{
    Map<String, String> inputFieldMap = new HashMap<String, String>();

    Elements inputElements = loginPage.getElementsByTag("input");

    for(Element e : inputElements)
    {
        if(!e.attr("name").isEmpty())
            inputFieldMap.put(e.attr("name"), e.attr("value"));
    }
    return inputFieldMap;
}

String url_logon_str = "https://developer.amazon.com/home.html";
Connection.Response login_response = Jsoup.connect(url_logon_str).method.(Connection.Method.GET).execute();

Document loginPage = login_response.parse();
Map<String , String> inputFieldMap = get_All_InputFields(loginPage);

ログオンできません。投稿されるフォームデータを確認したところ、投稿時に送信する必要がある、metadata1 という名前の入力フィールドがあります。

しかし、metadata1 は inputFieldMap 変数に存在しませんか?

私は何か間違ったことをしていますか?

4

1 に答える 1

0

フィールドを取得していない理由はmetadata1、JavaScript コードによって DOM に追加されているためです。

これは、 REST コンソール for Chromeなどのシンプルな REST クライアントを使用してhttps://developer.amazon.com/home.htmlから GETすることで確認できます。

metadata1REST コンソールはブラウザーのように JavaScript を自動的に実行しないため、返された HTML にフィールドがないことに気付くでしょう。

これについて実際にできることは何もありません。Jsoupはブラウザではありません

Amazon の開発者ページをスクレイピングしようとしている場合、この種の問題は氷山の一角に過ぎないことをお勧めします。掘り下げてみると、そのタスクを実行する API またはライブラリが既に公開されている可能性があります。

于 2013-10-01T07:06:59.680 に答える