qt 中使用 Gumbo 获取所有<div> 并获取inerHtml
时间: 2023-05-26 20:01:35 浏览: 119
qt获取数据
A:
在Qt中使用Gumbo获取所有<div>标签及其innerHtml的步骤如下:
1. 首先,你需要将Gumbo库添加到你的Qt项目中。你可以通过下载Gumbo源代码并将其编译为静态库,然后将其添加到你的项目中。
2. 在你的Qt代码中,包含Gumbo头文件:
```
#include "gumbo.h"
```
3. 读取HTML文本并将其传递给Gumbo解析器:
```
const char* html_text = "<html><body><div>first div</div><div>second div</div></body></html>";
GumboOutput* output = gumbo_parse(html_text);
```
4. 在解析器的输出中查找<div>标签:
```
GumboNode* root = output->root;
GumboVector* divs = &root->v.element.children;
for (unsigned int i = 0; i < divs->length; ++i) {
GumboNode* child = static_cast<GumboNode*>(divs->data[i]);
if (child->type == GUMBO_NODE_ELEMENT && strcmp(child->v.element.tag, "div") == 0) {
// Found a <div> tag
// Get the inner HTML of the <div> tag
const char* inner_html = gumbo_normalized_text(child->v.element.children);
qDebug() << "Inner HTML of div tag: " << inner_html;
// Free the memory used by the inner HTML string
gumbo_parser_free(output->document, inner_html);
}
}
```
这将遍历解析器输出中的所有子节点,并查找标记名称为“div”的元素。如果找到了一个,它将获取该元素的innerHtml并打印它。
5. 最后,我们需要释放Gumbo解析器使用的内存:
```
gumbo_destroy_output(&kGumboDefaultOptions, output);
```
这将释放Gumbo解析器使用的所有内存。
阅读全文