【发布时间】:2015-09-06 18:22:36
【问题描述】:
我想阅读我在http://finance.yahoo.com/exchanges 看到的表格的后缀列。
我阅读了QNetworkManager 的页面。将数据存储在QNetworkReply *reply 中。如果我用reply->readAll() 阅读了所有页面,我获得了该页面,因此它被正确检索。我将它设置在 QWebPage 中,然后我想检索其中的所有表。
为了获得表格,我想使用QWebElement,但我无法阅读它。我阅读了与我想要的相同级别的所有表格,但我获得的QWebElementCollection 是空的。
我做错了什么,我必须做什么才能阅读表格?
void getMarketListFromReply(QNetworkReply *reply) {
std::cout << "Reading page" << std::endl;
const QString html(reply->readAll()); // html contain the code
QWebPage page;
std::cout << "Setting page." << std::endl;
page.mainFrame()->setHtml(html);
std::cout << "Retrieving tables" << std::endl;
QWebElementCollection tables = page.mainFrame()->documentElement().findAll("html body div.screen div.content table");
const int size = tables.count(); // size it's 0 :-(
std::cout << "size: " << size << std::endl;
for (int i = 0; i < size; i++) {
std::cout << i << ": " << tables.at(i).toPlainText().toStdString() << std::endl;
}
}
【问题讨论】:
标签: c++ qnetworkaccessmanager qwebpage qnetworkreply qwebelement