Node.js 使用Cheerio在脚本标记内获取变量值
172/5000 下午好我试图在标记中获取变量“var JS_WCACHE_CK=”的值,但我已经测试并尝试调整一些代码,但没有成功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
<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了:)