现在,我试图从抓取网站获取一些数据。
目标网站使用谷歌地图提供自行车站的当前状态。
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源代码用于目标网站。在GDownloadUrl回调函数中,参数&#34; data&#34;包含自行车站的当前状态。我想获得数据。 现在,我尝试使用python selenium和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()的返回值就是数据。但是返回值只是&#34; True&#34;。
我对js知之甚少..如何获取数据?请帮忙
答案 0 :(得分: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]);
});
""")