qt 中使用 Gumbo 获取所有div标签
时间: 2023-05-26 08:01:33 浏览: 143
A: 可以使用以下代码片段来使用 Gumbo 获取所有 div 标签:
```cpp
#include <gumbo.h>
void print_div(GumboNode* node) {
if (node->type != GUMBO_NODE_ELEMENT) {
return;
}
GumboAttribute* class_attr = gumbo_get_attribute(&node->v.element.attributes, "class");
if (class_attr && strcmp(class_attr->value, "div") == 0) {
printf("Found div: %s\n", gumbo_get_text(node));
}
GumboVector* children = &node->v.element.children;
for (unsigned int i = 0; i < children->length; ++i) {
print_div(static_cast<GumboNode*>(children->data[i]));
}
}
int main() {
const char* html = "<html><body><div class=\"div\">This is a div.</div><div class=\"notdiv\">This is not a div.</div><div><p>Another div with nested p tag.</p></div></body></html>";
GumboOutput* output = gumbo_parse(html);
print_div(output->root);
gumbo_destroy_output(&kGumboDefaultOptions, output);
return 0;
}
```
这个代码片段的主要思路是通过 Gumno 解析 HTML 并遍历 HTML 文档树,检查是否存在 div 标签,并打印它们的文本内容。其中 `gumbo_get_attribute` 函数用于获取节点的 class 属性,`strcmp` 函数用于比较 class 属性是否等于 "div"。
阅读全文