我正在尝试刮擦https://www.premierleague.com/clubs/38/Wolverhampton-Wanderers/stats?se=274 返回的结果是页面减去?se = 274的结果 这是通过使用页面上的过滤器下拉列表并选择2019/20赛季来应用的。我可以直接导航到页面,它可以正常工作,但是通过代码却无法正常工作。
我曾尝试过在麦当劳和木偶戏中表演。我也打算尝试噩梦,但是我认为这似乎有些过头了。我显然不是专家! ;)
function getStats(callback){
var url = "https://www.premierleague.com/clubs/38/Wolverhampton-Wanderers/stats?se=274";
request(url, function (error, response, html) {
//console.log(html);
var $ = cheerio.load(html);
if(!error){
$('.allStatContainer.statontarget_scoring_att').filter(function(){
var data = $(this);
var vSOT = data.text();
//console.log(data);
console.log(vSOT);
});
}
});
callback;
}
这将返回564而不是2
答案 0 :(得分:0)
似乎您在callback
返回之前正在呼叫request
。将回调调用移到内部块中,您需要完成的任务(在您的情况下,看起来像filter
块)。
看起来您在回叫电话上也缺少()
。
另外,建议:通过回调返回所需的值。
答案 1 :(得分:0)
因此,此代码有效。...从租来的编码器中花10美元就可以了。当您知道如何时就很容易!
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto('https://www.premierleague.com/clubs/4/Chelsea/stats?se=274')
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
await sleep(4000)
const element = await page.$(".allStatContainer.statontarget_scoring_att");
const text = await page.evaluate(element => element.textContent, element);
console.log("Shots on Target:"+text)
browser.close()
})()