Javascript 如何修复'$(…)。单击不是一个函数';在节点/o中

Javascript 如何修复'$(…)。单击不是一个函数';在节点/o中,javascript,node.js,web-scraping,request,cheerio,Javascript,Node.js,Web Scraping,Request,Cheerio,我正在node.js中编写一个应用程序,它将导航到一个网站,单击该网站上的按钮,然后从该网站提取某些数据。除了按钮点击方面,一切都进展顺利。我似乎无法模拟按钮的点击。我对这方面非常陌生,所以如果你们有任何建议,我将不胜感激!可悲的是,我在互联网上搜寻这个问题的解决方案,却找不到 我在使用'request'和'cheerio'的.js文件中使用了.click()和.bind('click,…) 我还尝试在另一个使用“chrome launcher”、“chrome remote interface

我正在node.js中编写一个应用程序,它将导航到一个网站,单击该网站上的按钮,然后从该网站提取某些数据。除了按钮点击方面,一切都进展顺利。我似乎无法模拟按钮的点击。我对这方面非常陌生,所以如果你们有任何建议,我将不胜感激!可悲的是,我在互联网上搜寻这个问题的解决方案,却找不到

我在使用'request'和'cheerio'的.js文件中使用了
.click()
.bind('click,…)

我还尝试在另一个使用“chrome launcher”、“chrome remote interface”和“Puppeter”的.js文件中使用
page.click()
page.evaluate()

以下是我的“请求”和“cheerio”文件代码:

const request = require('request');
const cheerio = require('cheerio');

let p1 = {}, p2 = {}, p3 = {}, p4 = {}, p5 = {};

p1.name = 'TheJackal666';

p2.name = 'Naether Raviel';

p3.name = 'qman37';

p4.name = 'ranger51';

p5.name = 'fernanda12x';

const team = {1: p1, 2: p2, 3: p3, 4: p4, 5: p5};

for(var x in team){
        let url = 'https://na.op.gg/summoner/userName=' + 
team[x].name;

        request(url, (error, response, html) => {
            if (!error && response.statusCode == 200) {
                const $ = cheerio.load(html);

                $('.SummonerRefreshButton.Button.SemiRound.Blue').click(); 
//FIXME: MAKE A FUNCTION THAT SUCCESSFULLY "CLICKS" UPDATE BUTTON

                team[x].overallWR = $('.winratio');
                team[x].overallWR = 
team[x].overallWR.text().match(/\d/g);
                team[x].overallWR = 
team[x].overallWR.join("");

            console.log(team[x].overallWR);
            }
        });
}
我希望在任何页面上成功单击更新按钮(页面上有一个部分显示上次更新的时间),而不会出现错误。事实上,我要么得到一个错误:

"$(...).click is not a function"
或者(如果我将该行合并到外部函数中),我不会得到错误,但不会得到结果

非常感谢你们能提供的任何帮助 见:

Cheerio不是网络浏览器

ChereIO解析标记并提供用于遍历/操作结果数据结构的API。它不会像web浏览器那样解释结果。具体来说,它不会生成可视化渲染、应用CSS、加载外部资源或执行JavaScript。如果您的用例需要任何这些功能,您应该考虑像PHOTAMOJS或JSDOM之类的项目。
Cheerio是一个HTML解析器

ChereIO可以用来选择和操作dom元素,但它不是一个完整的浏览器

Cheerio只能访问原始源dom,这意味着如果网页的dom由javascript操纵,Cheerio将不会注意到该更改

ChereIO不能用于与dom元素(ala jQuery)交互,因为它不会在窗口(js窗口)中执行

到目前为止,如果您需要对js呈现的html进行操作或选择,最好的选择是Puppeter。但这很可能会改变


HTH

@pguardiario-与Cheerio的维护者们讨论一下。我引用的是他们的建议。谢谢@CodeMonkey,请看我的答案,我相信你会同意我的答案更具信息性。我在这里删除我的评论。