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

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

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

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

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

Но я не могу придумать как таким образом я могу дергать товары с n разных сайтов, сопоставить их по одинаковым товарам в удобочитаемый вид и сравнивать цены. В каких эллементах win forms это лучше сделать, должен ли я для каждого товара создавать например условный экземпляр товара (но тогда их будет дофига) и затем их сравнивать или может можно после парсинга все складывать в бд, а затем от туда тянуть. В общем проблемы с проектированием, если кто то подскажет как это все можно реализовать буду благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2021, 09:14
Ответы с готовыми решениями:

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

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

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

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

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

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

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

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

Добавлено через 3 минуты
Цитата Сообщение от Максим 0308 Посмотреть сообщение
На счет артикула
Здесь идея состоит в том, что на первом этапе вы парсите страницы с товаром на разных сайтах и сами определяете, какие две (или больше) страницы содержат одинаковый товар для сравнения, затем вы объединяете эти страницы (фактически url страниц) в группу. Ну а потом товары в группах можно уже парсить и сравнивать автоматически.
1
2806 / 1676 / 884
Регистрация: 14.04.2015
Сообщений: 5,717
16.12.2021, 10:19 5
Максим 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
16.12.2021, 10:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2021, 10:19
Помогаю со студенческими работами здесь

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

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

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

Занесение цен на товары в "Управление торговли" 10
Установил УТ версии 10.3.18.4, но возникла проблема с заполнением каталога товаром. В системе...

Спарсить: 12 ссылок на изображении товаров, 12 ссылок на товары, 12 цен товаров (html dom)
Начал учится парсить (с php_html_dom), но не могу вникнуть в процесс (как это работает?). Помогите...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru