我想根据Google Play中的应用ID(例如com.instagram.android)抓取应用信息。
我使用npm软件包作为搜寻器:https://www.npmjs.com/package/google-play-scraper
我以前没有任何JavaScript经验,也不知道如何针对我的目的对其进行修改。 目前,我无法将其用于抓取应用ID列表,并将返回的结果另存为* .txt以便进一步分析。
我尝试了他们的示例代码,并且运行良好。但是我只能看到.then(console.log, console.log)
返回的结果。如何将结果保存到.txt文件?
var gplay = require('google-play-scraper');
gplay.app({appId: 'com.dxco.pandavszombies'})
.then(console.log, console.log);
我被困在这里,有人可以在这个问题上帮助我吗?我尝试了多种方法来解决此问题,但是它们都没有起作用...我真的很困惑如何将返回的值保存到.txt文件中
我试图将所有可能的变量保存到.txt文件中,仅保存以下信息:
[object]
[object promise]
已保存。
我试图这样保存它:
var first = gplay.app({appId: 'com.instagram.android'});
app_result = first.then((result) => console.log(result));
fs.writeFile('App_Result.txt', app_result, (err) =>{
if (err) throw err;
console.log('App_Result saved!');
});
我知道这可能是由于Promise策略引起的,我需要等待Promise解决之后才能返回结果。但是我不知道如何解决这个问题,因为我真的是javascript新手。
答案 0 :(得分:2)
首先:默认情况下,JavaScript非常无助地打印对象,例如[Object object]
或类似对象。如果需要更多信息,请尝试将console.log
替换为data => JSON.stringify(data)
。
第二,由于Promises的性质,您必须将另一个.then
链接到现有代码上。像
const gplay = require('google-play-scraper');
const fs = require('fs');
const file = fs.createWriteStream('App_Result.txt');
gplay.app({appId: 'com.dxco.pandavszombies'})
.then(result => JSON.stringify(result))
.then(text => file.write(text));
答案 1 :(得分:0)
您的app_result
并不等于承诺的结果,而是承诺本身。
在将对象写入文件之前,还必须使用JSON.stringify
将对象转换为字符串。
尝试编写这样的异步函数。
const myFunction = async () => {
const app_result = await gplay.app({appId: 'com.instagram.android'});
fs.writeFile('App_Result.txt', JSON.stringify(app_result))
}