Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 27.12.2018
Сообщений: 33

Парсер цен на товары

16.12.2021, 09:14. Показов 1332. Ответов 4

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Стоит задача парсить условно 2 сайта (на самом деле их больше), получить название товара и цену, а затем сравнить цены на одинаковый товар. Важно чтобы цены были актуальные. Делаю в Windows Forms.

На данный момент я написал метод с помощью html agility pack, который на вход получает List<string> (список с ссылками на конкретный товар который в свою очередь я пополняю и сохраняю с помощью сериализации), далее в цикле из каждой ссылки я получаю название товара и его цену. И вывожу это все в datagridview.То есть метод рабочий.

Но я не могу придумать как таким образом я могу дергать товары с n разных сайтов, сопоставить их по одинаковым товарам в удобочитаемый вид и сравнивать цены. В каких эллементах win forms это лучше сделать, должен ли я для каждого товара создавать например условный экземпляр товара (но тогда их будет дофига) и затем их сравнивать или может можно после парсинга все складывать в бд, а затем от туда тянуть. В общем проблемы с проектированием, если кто то подскажет как это все можно реализовать буду благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.12.2021, 09:14
Ответы с готовыми решениями:

Рост цен на товары в России (опрос)
Опрос можно сформулировать так: вы на вашу нынешнюю зарплату можете купить меньше или больше товаров, чем полгода назад?

Построить столбчатую диаграмму, которая отображает рост цен в % на товары
Нужно построить столбчатую диаграмму которая отображает рост цен у % на товары (обувь, постель, средства личной гигиены ,бельё, одежда) за...

Joomla 3.X нужно создать выборку городов + привязка цен на товары
Joomla 3.X нужно создать выборку городов + привязка цен на товары, чтоб при выборе города к нему шли определенные тарифы (сайт интернет...

4
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
16.12.2021, 09:39
Цитата Сообщение от Максим 0308 Посмотреть сообщение
но тогда их будет дофига
Один и тот же товар может на разных сайтах по разному называться. Как вы будете их сравнивать?
Если бы был артикул какой, тогда да...
Цитата Сообщение от Максим 0308 Посмотреть сообщение
В каких эллементах win forms это лучше сделать
Это роли вообще не играет, сама логика поиска и сравнения товаров не должна быть завязана на элементы визуализации.

Я думаю, должна быть база данных, где будут записи о свойствах товара и откуда эти данные подгружались, а также дата последней загрузки (свежесть).
Тогда процессы парсинга, актуализации данных и сравнения цен можно разделить.
Можно вообще запускать эти процессы фоново, например, через шедулер виндовз.
1
0 / 0 / 0
Регистрация: 27.12.2018
Сообщений: 33
16.12.2021, 09:46  [ТС]
Цитата Сообщение от ashsvis Посмотреть сообщение
Если бы был артикул какой, тогда да...
На счет артикула хорошая идея, надо посмотреть есть ли в пределах одной ссылки общая характеристика условный артикул. Спасибо!

На счет элементов визуализации, я просто не работал до этого с win forms и мне интересен элемент где я могу удобно подсветить цены цветом например зеленый самая низкая, красный высокая и тд. Такое вообще можно сделать в datagridview?
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
16.12.2021, 10:01
Цитата Сообщение от Максим 0308 Посмотреть сообщение
Такое вообще можно сделать в datagridview?
datagridview я стараюсь вообще не использовать, он очень сложный и тормознутый (а вообще на вкус и цвет...)
Предлагаю использовать ListView с детальным отображением. Там есть возможность отрисовывать строки со своим цветом фона и цветом текста.

Добавлено через 3 минуты
Цитата Сообщение от Максим 0308 Посмотреть сообщение
На счет артикула
Здесь идея состоит в том, что на первом этапе вы парсите страницы с товаром на разных сайтах и сами определяете, какие две (или больше) страницы содержат одинаковый товар для сравнения, затем вы объединяете эти страницы (фактически url страниц) в группу. Ну а потом товары в группах можно уже парсить и сравнивать автоматически.
1
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
16.12.2021, 10:19
Максим 0308, так Вы на выходе получаете список объектов товара (название и цену)?
Цитата Сообщение от Максим 0308 Посмотреть сообщение
дергать товары с n разных сайтов
в чем проблема добавить ссылки на эти сайты в список, и читать их в цикле, передавать значение дальше, чтобы формировать данные?
можно все складывать в список списков, и с помощью LINQ получать выходную выборку, как нужно, и записывать в базу
вот пример
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace ConsoleApp249
{
    class Program
    {
        static void Main(string[] args)
        {
            List<List<Product>> products = new List<List<Product>>()
            {
                new List<Product>()
                {
                    new Product() { numSite = 1, name = "яблоко", cost = 50 },
                    new Product() { numSite = 1, name = "хлеб", cost = 20 },
                    new Product() { numSite = 1, name = "молоко", cost = 30 }
                },
                new List<Product>()
                {
                    new Product() { numSite = 2, name = "яблоко", cost = 50 },
                    new Product() { numSite = 2, name = "хлеб", cost = 20 },
                    new Product() { numSite = 2, name = "молоко", cost = 32 }
                },
                new List<Product>()
                {
                    new Product() { numSite = 3, name = "яблоко", cost = 45 },
                    new Product() { numSite = 3, name = "хлеб", cost = 21 },
                    new Product() { numSite = 3, name = "молоко", cost = 29 }
                }
            };
 
            var result = products
                .SelectMany(s => s.Select(_ => new { ns = _.numSite, nm = _.name, cs = _.cost }))
                .GroupBy(_ => new { nm = _.nm, cs = _.cs })
                .Select(_ => new { nm = _.Key.nm, cs = _.Key.cs, cnt = _.Count(), sites = String.Join(" ", _.Select(s => s.ns)) })
                .OrderByDescending(_ => _.nm)
                .ThenByDescending(_ => _.cnt);
 
            foreach (var row in result)
            {
                Console.WriteLine($"Товар {row.nm} цена {row.cs} количество одинаковых цен за товар {row.cnt} на сайтах {row.sites}");
            }
        }
    }
    public class Product
    {
        public int numSite { get; set; }
 
        public string name { get; set; }
 
        public int cost { get; set; }
    }
}
можно вообще все данные записывать в базу (что куда лучше) и посредством SQL производить расчеты.
модель будет почти такая же, только добавится справочник сайтов, которые по ключу будут привязываться к таблице продуктов.
начните читать про БД, это не сложный путь к пониманию проектирования модели данных
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.12.2021, 10:19
Помогаю со студенческими работами здесь

Парсер цен
Добрый день!подскажите где взять или как сделать.Необходимо вытягивать цены и название товара в эксель фаил.Есть исходные данные .Тоесть...

Выбрать все товары из галантерейного отдела и отсортировать в порядке убывания цен
Пожалуйста, помогите решить задачу. Работа с файлами. Даны сведения: название товара, отдел, количество, цена. Выбрать все товары...

Парсер цен конкурентов
Друзья. Я пытался найти куда поставить свой вопрос и не знаю в какой раздел можно обратиться. Поэтому прошу прощения, если мой вопрос в...

Парсер цен на топливо
Здраствуйте помогите создать парсер цен на топливо к примеру http://forexbrest.info/toplivo/

Курсовой проект "Мониторинг цен на потребительские товары"
по теме курсового проекта нужно написать прогу на тему &quot;программа мониторинга цен на потребительские товары&quot;, к примеру я хочу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru