저는 CasperJS를 사용하여 사이트를 긁어 내고, 긁어 낸 정보를 구성하는 JSON 객체를 작성한 다음 해당 JSON 객체를 정보를 데이터베이스에 ETL하는 서비스 (PHP)에 게시합니다. .CasperJS가 끝점에 빈 POST 데이터를 보냅니다.
여기에 문제가 있습니다. JSON 객체를 보내려고 할 때마다 객체가 비어 있습니다. 이것은 정보를 보내는 데 사용하는 코드입니다.
casper.then(function(){
var productDetails = {};
this.each(products,function(self, product){
self.thenOpen(product, function(a){
productDetails = this.evaluate(getProductDetails);
});
self.thenOpen('http://localhost.endpoint.lan/saveScrapingData.php', {
method:'post',
data: {
name:'Alan',
info: productDetails
},
headers: {
'Content-type': 'application/x-www-form-urlencoded'
}
});
});
});
문제는 productDetails이 빈으로 전송되고 있다는 것입니다, 나는이 시점에서 변수를 console.log
때문에 경우 이유를 모르겠어요 :
self.thenOpen(product, function(a){
productDetails = this.evaluate(getProductDetails);
});
변수입니다 비어 있지보다 더 이것은 경주 조건 일 가능성이 높습니다. 변수에 데이터가 포함되기 전에 변수가 전송되었지만 변수가 데이터를 포함하고 있는지를 확인한 후에 데이터를 보내는 경우 왜 이런 일이 발생하는지 이해할 수 없습니다.