【发布时间】:2013-09-12 08:19:38
【问题描述】:
我想在b 标签中提取information => 123456789
这是 HTML 源代码:
<body>
<div>
<table>
<tbody>
<tr>
<td class="myclass">
<b>123456789</b>
</td>
</tr>
</tbody>
</table>
</div>
</body>
所以,我尝试了这个:
void My_Test_Dialog::on_pushButton_clicked()
{
QWebView *webview = new QWebView(parentWidget());
webview->load(QUrl("http://www.esesese.com"));
webview->show();
// get HTML element information
QWebElementCollection colls = webview->page()->mainFrame()->findAllElements("td.myclass b");
foreach(QWebElement elemento, colls)
{
ui->lineEdit_data->setText(elemento.toInnerXml());
}
}
我有一个带有按钮(call update) 和LineEdit 的表单,所以如果我点击update 按钮,LineEdit 应该会自动设置文本123456789。但是我的代码不起作用。 LineEdit 的文本保持为空。
我包括这个:
#include <QtWebKit>
#include <QtWebKitWidgets/QWebFrame>
#include <QWebView>
QT file.pro 是:
QT += core gui
QT += network
QT += webkit
QT += webkitwidgets
【问题讨论】:
-
考虑在点击“更新”按钮之前给 webview 时间来加载页面完成
-
不,你没有。至少这是您的代码所说的。您在 on_pushButton_clicked 插槽中加载您的网站。在同一个插槽中,您尝试评估结果。立即下载?使用 QWebView 的 loadFinished 信号来确定您的 url 加载何时完成。 那么您可以尝试评估内容。
-
还有,我如何使用 loadFinished() ?你能举个例子吗
标签: c++ html qt html-content-extraction