Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用Cheerio在脚本标记内获取变量值_Node.js_Web Scraping_Cheerio - Fatal编程技术网

Node.js 使用Cheerio在脚本标记内获取变量值

Node.js 使用Cheerio在脚本标记内获取变量值,node.js,web-scraping,cheerio,Node.js,Web Scraping,Cheerio,172/5000 下午好我试图在标记中获取变量“var JS_WCACHE_CK=”的值,但我已经测试并尝试调整一些代码,但没有成功 <script> var JS_IDIOMA = "pt"; var JS_LINK_ROOT = "https://tabuademares.com"; var JS_RUTA_ASSETS = "/assets/"; var CONF_FORMATO_HORA = 1; window.google_analy

172/5000 下午好我试图在标记中获取变量“var JS_WCACHE_CK=”的值,但我已经测试并尝试调整一些代码,但没有成功

<script>
    var JS_IDIOMA = "pt";
    var JS_LINK_ROOT = "https://tabuademares.com";
    var JS_RUTA_ASSETS = "/assets/";
    var CONF_FORMATO_HORA = 1;
    window.google_analytics_uacct = "UA-8166479-17";
    var JS_URL_ACTUAL="%2Fbr%2Fespirito-santo%2Fvitoria";
    var JS_FECHA_ACTUAL="2020-01-26+19%3A00";
    var JS_CODIGO_ESTACION="br56";
    var JS_WCACHE_CK="Mjg5Ng==";
    var JS_ACTIVAR_SERVIDOR_BACKUP=1;
    var JS_LATITUD="-20.32352";
    var JS_LONGITUD="-40.29919";
    var JS_ZOOM="12";   
</script>

var JS_IDIOMA=“pt”;
var JS_LINK_ROOT=”https://tabuademares.com";
var JS_RUTA_ASSETS=“/ASSETS/”;
var CONF_FORMATO_HORA=1;
window.google_analytics_uacct=“UA-8166479-17”;
var JS_URL_ACTUAL=“%2Fbr%2Espirito santo%2Fvitoria”;
var JS_FECHA_ACTUAL=“2020-01-26+19%3A00”;
var JS_CODIGO_ESTACION=“br56”;
var JS_WCACHE_CK=“Mjg5Ng=”;
var JS_ACTIVAR_servisdor_BACKUP=1;
var JS_LATITUD=“-20.32352”;
var JS_LONGITUD=“-40.29919”;
var JS_ZOOM=“12”;

链接站点是:

我想说,Cheerio不是你想要的。一个更合适的方法也是,因为您需要一些不仅解析html而且还具有语言引擎的东西,这样您就可以与页内脚本交互,而无需执行诸如
eval
之类的邪恶操作:

import { Browser, launch, Page, Response } from "puppeteer";

export class JsVarService {
  private browser!: Browser;
  private page!: Page;

  constructor(private url: string) {}

  public async getVarValue(varName: string): Promise<string> {
    await this.getResponse();
    const results = <string>await this.page.evaluate(`window["${varName}"]`);
    await this.close();
    return results;
  }

  private async getResponse(): Promise<Response | null> {
    this.browser = await launch();
    this.page = await this.browser.newPage();
    return this.page.goto(this.url);
  }

  private async close(): Promise<void> {
    this.browser.disconnect();
  }
}

async function run(): Promise<void> {
  const url = "https://tabuademares.com/br/espirito-santo/vitoria";
  const varName = "JS_WCACHE_CK";
  const service = new JsVarService(url);
  console.log(await service.getVarValue(varName));
}

run().catch(e => { throw new Error(e) });
import{Browser,launch,Page,Response}来自“puppeter”;
导出类JsVarService{
私人浏览器!:浏览器;
私人网页!:第页;
构造函数(私有url:string){}
公共异步getVarValue(varName:string):承诺{
等待此消息。getResponse();
const results=wait this.page.evaluate(`window['${varName}]`);
等待这个。关闭();
返回结果;
}
私有异步getResponse():承诺{
this.browser=等待启动();
this.page=等待this.browser.newPage();
返回this.page.goto(this.url);
}
私有异步关闭():承诺{
this.browser.disconnect();
}
}
异步函数run():Promise{
常量url=”https://tabuademares.com/br/espirito-santo/vitoria";
const varName=“JS_WCACHE_CK”;
const service=newjsvarservice(url);
log(wait service.getVarValue(varName));
}
run().catch(e=>{throw new Error(e)});

非常感谢您的帮助,只是我对typescript几乎一无所知。但我会努力适应。这里什么都可以!谢谢Ali Habibzadeh谢谢你的代码!我是adapt do.js和works!!很高兴这有帮助。对不起,很久没有写js了:)