当前位置: 首页 > 面试题库 >

如何使用Node / Cheerio(或其他工具)从站点中抓取全局变量?

叶浩荡
2023-03-14
问题内容

页面上有一个全局变量,其中包含一个我想为其设置刮板的对象。使用Node / Express /可能使用Cheerio的最佳方法是什么?

我了解Cheerio在遍历DOM方面的好处,但是我知道我要抓取的全局变量的名称,只需要按设定的时间表提取其信息即可


问题答案:

Cheerio只是一个dom解析器,因此您不会访问任何javascriot或任何javascript生成的内容。

您需要像PhantomJS这样的东西来模拟浏览器。

您需要了解的是phantomJS具有两个JavaScript环境,并且这两个环境彼此独立。内部脚本是文档脚本(在任何浏览器中都可以使用)。最外面的是控制phantomJS应该做什么。它模拟用户。

因此,从某种意义上讲,您需要告诉phantomJS“用户打开了任何键入的JavaScript控制台...”。该评估命令执行此操作。

因此,要读取变量的值foo,请编写以下代码:

var foo = page.evaluate(function() {
    return document.foo;
});

注意:document并不是绝对必要的,但是它有助于使两个环境在开发人员的头脑中分开。



 类似资料:
  • 问题内容: 我从很多地方都听说过,全局变量本来就是讨厌和邪恶的,但是当使用一些非面向对象的Javascript时,我看不到如何避免它们。说我有一个函数,它使用复杂的算法使用随机数和填充物来生成数字,但是我需要在其他函数(回调或其他函数)中继续使用该特定数,因此不能成为同一函数的一部分。 如果最初生成的数字是局部变量,则无法从那里访问它。如果函数是对象方法,我可以将数字设为属性,但是它们不是属性,并

  • 我是Drools的新手。我在drl文件中将对象列表作为全局变量,并在规则1中的列表中添加记录。每次执行规则1时,它都会在列表中添加更新的记录。我想在规则2中使用该列表。但是当执行规则2时,列表变空了。 基本上,我计划实现以下目标: 我会有一个学生名单[规划变量](比如10) 我会列出学生需要参加的活动(比如60项)。每项活动都有一个地点、开始和结束时间,并在全天的不同地点进行 我希望将最近的学生分

  • 问题内容: 例如,我想使用自定义记录器: 如何在其他模块而不是console.log中使用此记录器? 问题答案: 大多数人建议不要使用全局变量。如果要在不同模块中使用相同的记录器类,则可以执行此操作 logger.js foob​​ar.js 如果确实需要全局变量,则可以执行以下操作:

  • ThingJS PaaS 平台还提供一下相关工具来给项目开发助力,浏览下面的网页,帮助您快速掌握图表制作工具 ChartBuilder 和 LiveServer 部署包的使用方法。 ChartBuilder 用户手册 LiveServer 用户手册 ThingJS 平台三维模型制作指南

  • hash工具,主要用来计算字符串的hash值。提供三种hash算法, BKDR, JS, DJP. 根据需要自行选择 方法名 方法说明 BKDRHash 采用bkdr算法计算hash值 JSHash 采用js算法计算hash值 DJPHash DJP hash 算法,冲突率低,但是算法比较复杂,效率不是很高。 AjaxResult 用来返回json视图。提供了以下API: ajaxSuccessR

  • 问题内容: 因此,我有两个不同的文件,如下所示: file1.py file2.py 但是我似乎无法让file2识别来自file1的变量,即使它已经导入到file1中也是如此。如果可以某种方式实现,那将非常有帮助。 问题答案: 导入在使得全球(即,模块级)的约束名字提供给下面的代码-唯一的此类名称是。它并 没有 做反向:在定义的名称并不提供给代码的时候进口。即使您以正确的方式(如@nate正确建议