2017-12-12 17 views
0

今、私はクロールウェブサイトからいくつかのデータを取得しようとしました。GDownloadUrlコールバックからjs varデータを取得する方法は?

対象のウェブサイトは、Googleマップを使用して自転車ステーションの現在のステータスを提供します。

GDownloadUrl("/mapAction.do?process=statusMapView", function(data, responseCode) { 

     var jsonData = eval("(" + data + ")"); 
     //alert(jsonData.centerLat); 
     var length = jsonData.markers.length; 
     //if (length > 100) length = 100; 

     for (var i = 0; i < length; i++) { 
      var point = new GLatLng(parseFloat(jsonData.markers[i].lat), parseFloat(jsonData.markers[i].lng)); 
      var name = jsonData.markers[i].name; 
      var cntRackTotal = jsonData.markers[i].cntRackTotal; 
      var cntRentable = jsonData.markers[i].cntRentable; 
      var cntLockOff = jsonData.markers[i].cntLockOff; 
      var cntPrtRack = jsonData.markers[i].cntPrtRack; 
      var percent = jsonData.markers[i].percent; 
      var imgFile = jsonData.markers[i].imgFile; 
      var number = jsonData.markers[i].kiosk_no; 

      //map.addOverlay(createMarker(number, point, name, cntRackTotal, cntRentable, cntLockOff, cntPrtRack, percent, imgFile)); 


     } 
    }); 

このJSソースコードは、対象のWebサイトで使用されています。 GDownloadUrlコールバック関数では、パラメータ "data"に自転車ステーションの現在のステータスが格納されます。そして私はデータを取得したい。 今、私はpythonセレンとexecute_script()を使ってみました。

jsSourcecode = ("var strData;"+ 
    "strData = GDownloadUrl('/mapAction.do?process=statusMapView',"+ 
    " function(data, responseCode) {return data;}); return strData;") 

data = driver.execute_script(jsSourcecode) 

このソースコードは、私がデータを取得するために使用したものです。私は、コールバックのデータがvar strDataに格納され、execute_script()の戻り値がデータであると予想しました。戻り値はちょうど "真"です。

私はjsについてほとんど知識がありません。どのようにデータを取得できますか?助けてください

答えて

0

呼び出している関数は非同期で、引数としてコールバック関数が必要です。

使用execute_async_scriptと最後の引数に存在するコールバック提供:

data, status = driver.execute_async_script(""" 
    var callback = arguments[0]; 
    window.GDownloadUrl('/mapAction.do?process=statusMapView', function(data, status){ 
    callback([data, status]); 
    }); 
    """) 
関連する問題