gpt4 book ai didi

python - 将 JS 代码转换为 XML 编码的 AST 树

转载 作者:行者123 更新时间:2023-12-01 05:30:31 27 4
gpt4 key购买 nike

当我编写抓取工具时,我总是使用优秀的 XPath 查询语言从 HTML 或 XML 中提取数据。

我经常使用动态 HTML,并且需要从 Javascript 代码中提取一些变量,因此我不得不编写丑陋的正则表达式来做到这一点。

我正在寻找一些更好的方法来做到这一点,而不涉及任何像 PhantomJS 这样的重量级 Javascript 解释器。

我知道,那里有很多工具,将语法解析为 XML 或 JSON 文件,并寻找类似可用于解析 JS 语法的东西。

最佳答案

你说得对,“丑陋的正则表达式”不能真正用于处理任意 JS(或任何其他与此相关的标准编程语言)。您需要一个成熟的解析器。

没有“很多工具”可以将(语言)语法解析为 XML。大多数真正的语言工具都有解析器,它们构建一个内部 AST 数据结构,旨在高效访问,然后工具使用该结构来实现其目的(分析、转换、执行)。你说“翻译成它的树”,就好像那棵树是独一无二的一样;事实并非如此。构建的 AST 取决于解析技术、所使用的语法以及设计者认为重要的访问内容,因此没有两种语言工具能够就 AST 的外观达成一致。因此,树的形状取决于工具。

如果您掌握了任何此类工具的源代码,您可以放弃其后解析机制,并添加代码来遍历 AST 并转储 XML;这并不是特别困难(尽管正确地获得所有输出字符转义/编码是皇家 PITA 的任务)。当然,您获得的 XML 将根据原始工具 AST 进行塑造。这意味着您构建的用于处理 XML 的任何工具都必须隐式地理解您开始使用的特定工具的解析器的形状。

我碰巧构建了通用程序转换机制(参见简介),它具有适用于包括 JavaScript 在内的多种语言的解析器。我们得到了足够多的“我希望我有 XML”请求,因此我们的特定工具将通过翻转命令行开关来生成 XML,完全使用上述方法。这是 SO question showing the XML output for Java 的链接,和 one for C++ 。如果您想查看 JavaScript 的一个,我可以制作它并附在此处,只需一点点努力。

关于python - 将 JS 代码转换为 XML 编码的 AST 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20377257/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com