我正在尝试将json传递给函数,但未成功 这是我到目前为止尝试过的
map<int,int> count,freq_count;
ll i,j,k,n,m,mask,x;
cin>>n;
for(i=0;i<n;i++){
cin>>x>>m;
if(x==1){
if(count.find(m)!=count.end()){
freq_count[count[m]]--;
if(freq_count[count[m]] == 0)
freq_count.remove(count[m]);
}
count[m]++;
frefreq_count[count[m]]++;
} else if(x==2) {
freq_count[count[m]]--;
if(freq_count[count[m]] == 0)
freq_count.remove(count[m]);
if(count[m]==0)
count.remove(m);
} else {
if(freq_count.find(m)!= freq_count.end()){
cout<<"1\n";
}
else{
count<<"0\n";
}
}
}
或类似的
await aHandle.$eval('input[name="date"]', (el) => (el.value =input.date)(input) );
或类似的
await aHandle.$eval('input[name="date"]', (el) => (el.value =input.date),input );
请告知正确的方法
答案 0 :(得分:2)
$ eval(selector,pageFunction [,... args])
args /参数已序列化,因此您可以像这样传递句柄和其他数据。
await aHandle.$eval(selector, (yourElementHandle, yourJsonData) => {
yourElementHandle.value = yourJsonData.username
}, (yourJsonData) ); // <-- pass the handle and data here
基本上,您在该函数之后传递的所有内容都会被序列化,并按该顺序在该函数中供您使用。
由于它分散了参数,因此即使不加括号()
,它也应该可以工作。
答案 1 :(得分:1)
这有效
const Apify = require('apify');
Apify.main(async () => {
const q = await Apify.openRequestQueue();
await q.addRequest({ url: 'http://example.com' })
const c = new Apify.PuppeteerCrawler({
requestQueue: q,
handlePageFunction: async ({ page }) => {
const inputServerSide = {
date: '2019-09-26'
};
const aHandle = await page.$('div');
await aHandle.$eval('h1', (el, inputClientSide) => {
el.name = inputClientSide.date;
}, inputServerSide );
const name = await page.$eval('h1', (el) => el.name);
console.log('Name:', name);
}
})
await c.run();
});