Я хочу прочитать суффикс столбца таблицы, которую я вижу на 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;
}
}
Точка в findAll()
Селектор обозначает класс тега. Тем не менее, в вашем случае «экран» и «контент» — это идентификаторы элементов, которые можно выбрать резким (#). Итак, следующие селекторы должны работать
.findAll("html body div#screen div#content table");
.findAll("#content table");