Парсинг погоды и курса валют

Задание следующее:

  1. Распарсить значения погоды со стартовой странички mail.ru
  2. Распарсить значения курса валют от туда же.

Мой код:

Переносим код странички в 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, происходят действия, которые описаны выше. Помогите разобраться в чем проблема в коде, либо предложите свои варианты более разумные и простые для решения данного задания. Спасибо.


Ответы (0 шт):