Парсинг погоды и курса валют
Задание следующее:
- Распарсить значения погоды со стартовой странички
mail.ru - Распарсить значения курса валют от туда же.
Мой код:
Переносим код странички в PlainTextEdit:
void MainWindow::on_pushButton_6_clicked()
{
QNetworkAccessManager manager;
QNetworkReply *response = manager.get(QNetworkRequest(QUrl("https://mail.ru")));
QEventLoop event;
connect(response,SIGNAL(finished()),&event,SLOT(quit()));
event.exec();
QString html = response->readAll(); // Source should be stored here
ui->plainTextEdit_2->setPlainText(html);
}
Далее работа с регулярными выражениями, я изучил код страницы и решил добавлять все найденные значения, фильтруя по знаку градуса °:
void MainWindow::on_pushButton_5_clicked()
{
if(!ui->plainTextEdit_2->toPlainText().isEmpty())
{
QRegExp rx(
"(>)"
"([.]*[^°]+)"
"(°)"
);
QStringList list;
int pos = 0;
while ((pos = rx.indexIn(ui->plainTextEdit_2->toPlainText(), pos)) != -1)
{
list << rx.cap(2);
pos += rx.matchedLength();
}
for(auto it : list)
{
QMessageBox msgBox;
msgBox.setWindowTitle("Погода:");
msgBox.setText(it);
msgBox.exec();
}
}
Но, этот код просто зависает на 5 сек и нечего не находит. Я, прежде чем делать поиск в коде всей HTML странице, протестировал код регулярного выражения на строке:
QString str = "src=\"https://limg.imgsmail.ru/assets/weather_icons/01.svg\" alt=\"ясно\"> <span class=\"weather__temp-period svelte-825bry\">+7°</span></div> </div>";
Все работает отлично, как только я заставляю искать в PlainTextEdit, происходят действия, которые описаны выше. Помогите разобраться в чем проблема в коде, либо предложите свои варианты более разумные и простые для решения данного задания. Спасибо.