如何使用 lua 通过 id 获取 http 标签文本

How to get http tag text by id using lua

有一个网页解析器,它把一个页面包含几个标签,按照一定的结构,其中div嵌套不好。我需要提取某个 div 元素,并将其及其所有内容复制到新的 html 文件中。

由于我是 lua 的新手,我可能需要一些基本的说明,因为事情看起来很简单。

谢谢,

数据提取的难易程度在很大程度上取决于页面本身。如果页面在整个页面中使用完全相同的标签信息,那么提取起来会比使用命名标签要困难得多。

如果您能够找到 returns json 格式的页面版本,那么您的情况就好多了。这是我写的一段代码,用于从没有 json 格式的网页中获取定义:

local actualword, definition = string.match(wayup,"<html.-<td class='word'>%c(.-)%c</td>.-<div class=\"definition\">(.-)</div>")

本质上,此代码向下搜索页面,直到找到 class "word",然后取其后的单词(%c 是控制字符的模式)。它继续 "definition" 并捕获了它。

如您所见,它有点令人费解,但我很幸运能够为我想要的内容专门命名标签。

根据您的评论对本文进行了编辑。作为我之前应该提到的旁注,如果您熟悉正则表达式,则可以使用它的模型来捕获您需要的内容。在这种情况下,它会完整地捕获字符串:

local data = string.match(page, "(<div id=\"aa\"><div>.-</div>.-</div>)")

这很少是语言的错,而是网页本身的错,这使得很难对任何数据进行挖掘。由于网页实际上可能有数百行代码,因此很难在不遇到垃圾信息的情况下准确指出您想要的内容。这就是为什么我更喜欢 json 这样的简化结果,因为 Lua 有一个 json 模块可以 encode/decode 并且你可以得到你的精确信息。