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>
我会说Cheerio不是您想要的。 Puppeteer也更合适,因为您不仅需要解析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) });