Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Парсинг данных с таблицы на сайте 
:(
    Опции темы
n199a
Дата 5.7.2018, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.11.2011

Репутация: нет
Всего: нет



Здравствуйте. Имеется сайт с таблицей (Допустим site.ru). Таблица примерно 10х10 в которую заносятся числовые значения десятичные. Но размер таблицы не фиксированный, он со временем может меняться, например на 10х17.
Вопрос:  Имеется форма MainWindow (простое окно, в которую добавляется элемент "TableView"). Каким образом реализовать через таблицу "TableView", чтобы создалась именно такая же таблица (такого же размера) как на сайте с переносом числовых значений (числовые значения должны записываться в переменные массива, массив динамический тогда должен быть).

Есть пример кода для создания столбцов и колонок, но не понимаю, как сделать эту таблицу динамической:
Код

 QStandardItemModel *model = new QStandardItemModel;
    QStandardItem *item;
 
    //Заголовки столбцов
    QStringList horizontalHeader;
    horizontalHeader.append("Первый");
    horizontalHeader.append("Второй");
    horizontalHeader.append("Третий");
    horizontalHeader.append("Четвертый");
 
    //Заголовки строк
    QStringList verticalHeader;
    verticalHeader.append("Ряд 1");
    verticalHeader.append("Ряд 2");
 
    model->setHorizontalHeaderLabels(horizontalHeader);
    model->setVerticalHeaderLabels(verticalHeader);
 
    //Первый ряд
    item = new QStandardItem(QString("0"));
    model->setItem(0, 0, item);
 
    item = new QStandardItem(QString("1"));
    model->setItem(0, 1, item);
 
    item = new QStandardItem(QString("2"));
    model->setItem(0, 2, item);
 
    item = new QStandardItem(QString("3"));
    model->setItem(0, 3, item);
 
    //Второй ряд
    item = new QStandardItem(QString("4"));
    model->setItem(1, 0, item);
 
    item = new QStandardItem(QString("5"));
    model->setItem(1, 1, item);
 
    item = new QStandardItem(QString("6"));
    model->setItem(1, 2, item);
 
    item = new QStandardItem(QString("7"));
    model->setItem(1, 3, item);
 
    ui->tableView->setModel(model);
 
    ui->tableView->resizeRowsToContents();
    ui->tableView->resizeColumnsToContents();


user posted image
PM MAIL   Вверх
ss
Дата 5.7.2018, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 17.5.2007

Репутация: нет
Всего: нет



Код

QStandardItemModel *model = new QStandardItemModel();
    model->setColumnCount(ColumnCoumn);
    model->setRowCount(RowCount);
    
    model->setData(model->index(row, column), value);

PM MAIL   Вверх
xvr
Дата 6.7.2018, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Вы не с того конца подходите к задаче. Вам сначала надо эту таблицу с сайта прочесть. Она там явно оформлена для чтения людьми, а не роботами.
Для начала посмотрите, как до неё добраться на сайте. тут вам помогут тулы для Web разработки (обычно встроенны во все современные браузеры). Найдите вашу таблицу в DOM загруженного документа.

У себя в программе грузите сайт в Web браузер (какой там сейчас в Qt, в не в курсе), и извлекаете таблицу из DOM загруженного документа.

PS. Руками парсить HTML не нужно smile
PM MAIL   Вверх
n199a
  Дата 6.7.2018, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.11.2011

Репутация: нет
Всего: нет



Цитата(xvr @  6.7.2018,  15:54 Найти цитируемый пост)
У себя в программе грузите сайт в Web браузер (какой там сейчас в Qt, в не в курсе), и извлекаете таблицу из DOM загруженного документа.

Принцип понял. Реализуем скачку DOM страницы html и извлекаем нужные данные. Где прочитать про эту самую реализацию скачки DOM html страницы? smile
Я так понял с DOM проще работать на Java?
 

Это сообщение отредактировал(а) n199a - 6.7.2018, 22:37
PM MAIL   Вверх
xvr
Дата 9.7.2018, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(n199a @  6.7.2018,  21:59 Найти цитируемый пост)
Реализуем скачку DOM страницы html и извлекаем нужные данные. 

Нет. Просто загружаете страницу в WEB компонент в Qt (в 5.8 это был QtWebEngine, к версии 5.10 Qt кажется смигрировал на какой то другой движок), он сам предоставит вам доступ к DOM представлению того, что он загрузил.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1116 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.