3

最近jSoupについて学び、さらに詳しく知りたいと思います。しかし、私はjavascriptを使用してWebページを処理する障害に遭遇しました(私はjsの知識をまだ持っていません:/)。

htmlunitがwebbrowserアクションを実行するための正しいツールになることを読みましたが、javascriptを使用してWebページで取得されたJSONオブジェクトを見つけることができれば、jsの知識は必要ないことがわかりました

たとえば、このページ:ソースファイルの中で、そのうちの1つはtooltips.jsです。このファイルでは、変数rgNeededFeedsが生成され、メソッドLoadHeropediaData()で呼び出されます。このメソッドは、jsonオブジェクトを取得するためのURLリンク全体を生成するメソッドです。

URL = URL + 'jsfeed/heropediadata?feeds='+strFeeds+'&v=3633666222511362823&l=english';

私は実際にstrFeedsが何であるかについて頭を悩ませることができませんでした。さまざまな組み合わせを試しましたが、機能しません(空の配列が返されました...)。または、私の推測は完全にオフですか?

私が実際に必要としているのは、「アイテム」の1つをクリックしたときに上部に表示されるデータです。「ホバー」の情報も同様ですが、「レシピ」の情報が不足しています。そして、上記の完全なURLからjsonオブジェクトを取得することで、基本的にすべてのデータ情報がそのjsonに含まれるはずだと思います。

とにかく、これは私がそれらのソースファイルを何時間も見つめていることから私が理解していることに基づいています。私が間違っている場合は私を訂正してください。(ちなみに私はJavaを使用しています)

** p / s:この機会に、私がjSoupに疑問を持っているとき、彼はいたるところにいるBaluscに感謝の意を表したいと思います。:> *

4

1 に答える 1

1

strFeedsこれらの2つの文字列の1つにすぎません:itemdataまたはabilitydata

これはtooltips.js38-45行目にあります。

var rgNeededFeeds = [];
$.each( [ 'item', 'ability' ], 
function( i, ttType ){
        icons = GetIconCollection( ttType );
        if ( icons.length ){
            rgNeededFeeds.push( ttType+'data' );
                 //..............
            }
     }
)    

ttType[ 'item', 'ability' ]文字列と連結された配列に対する反復の値が配列dataにプッシュされますrgNeededFeeds

この関数LoadHeropediaDataは、上記の関数の最後にrgNeededFeedsパラメーターとして呼び出されます。

LoadHeropediaData( rgNeededFeeds );

余談ですが、ウェブサイトのスクレイピングを開始する場合は、JavaScriptの学習が必須になります。

注:その通りです。JSONには必要なすべての情報が含まれています...

于 2013-01-20T23:23:10.153 に答える