qt 中使用 Gumbo 获取所有div 节点 提供例子
时间: 2023-05-26 14:01:29 浏览: 151
获取图片或者div上的点坐标--带例子
5星 · 资源好评率100%
A:
下面是使用 Gumbo 获取所有 div 节点的代码示例:
```cpp
#include <gumbo.h>
#include <QString>
void traverse_divs(GumboNode* node)
{
if (node->type == GUMBO_NODE_ELEMENT)
{
GumboAttribute* class_attr = gumbo_get_attribute(&node->v.element.attributes, "class");
if (node->v.element.tag == GUMBO_TAG_DIV && class_attr && QString::fromUtf8(class_attr->value).contains("myclass"))
{
// Do something with the div node, for example:
QString text = QString::fromUtf8(gumbo_normalized_text(node->v.element.children));
qDebug() << "Found a div with class 'myclass': " << text;
}
GumboVector* children = &node->v.element.children;
for (unsigned int i = 0; i < children->length; ++i)
{
traverse_divs(static_cast<GumboNode*>(children->data[i]));
}
}
}
int main(int argc, char *argv[])
{
// Assume you have a string containing the HTML content
QString html = "<html><body><div class='myclass'>Hello</div><div class='otherclass'>World</div></body></html>";
// Parse the HTML using Gumbo
GumboOutput* output = gumbo_parse(html.toUtf8().constData());
// Traverse the HTML tree and find all div nodes with class 'myclass'
traverse_divs(output->root);
// Clean up
gumbo_destroy_output(&kGumboDefaultOptions, output);
return 0;
}
```
这里使用了 Gumbo 的 API 来遍历 HTML 文档,并使用了标签和类名来过滤 div 节点。
阅读全文