Как оптимальнее всего - сортировать данные после парсинга и внести их в MySql базу?

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 318
Баллы
113
Всем хорошего настроения. Подскажите, пожалуйста, есть у меня 3 столбца для парса - Имя, Дата, Цена :
53766

Как оптимальнее\быстрее всего(используя меньше кубиков) спарсить эти 3 показателя и внести их в Базу MySQL?

Для парса и внесения в 3-блокнота данных, я использую 3 C# кубика (1 на имя, 1 на цену и 1 на Дату):
C#:
var list = project.Lists["list2"]; // список проекта, в который класть результат
var tab = instance.ActiveTab;
HtmlElementCollection elements = tab.FindElementsByXPath("//*[@id='tabContentsMyActiveMarketListingsRows']//div[@class='market_listing_item_name_block']//span[@class='market_listing_item_name economy_item_hoverable']/a");
list.AddRange(elements.Select(e => e.GetAttribute("innerhtml")));
Но как спаршенные данные в большом количестве внести сразу в MySql?
И есть ли возможность спаршивать сразу 3 поля (Имя, Дата, Цена) одним кубиком(возможно есть оптимальное количество кубиков)?

А вносил я раньше данные в базу по одному значению, вот пример:
53768


Заранее, очень благодарен за бесценную помощь!
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 318
Баллы
113
Т.е. оптимальный вариант - парсить в 3 блокнота и потом по-одному значению добавлять в базу MSQL? Или просто долго писать и никто не хочет тратить свое время на это? Хоть что-то напишите, пожалуйста.
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Разбиваете строку с GetAttribute("innerhtml") на три столбца и добавляете в таблицу с помощью INSERT.
Что тут отвечать то?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
парсить таким образом не правильно изначально. Это может вызвать череду проблем в будущем. Верный подход
спаршивать сразу 3 поля (Имя, Дата, Цена)
И на их основе сразу формировать запрос.

Если речь строго об экшенах без кода, то нужен кубик, который регуляркой или по xpaph распрасит html каждого блока товара и скинет все эти блоки в список. По минимуму нужен 1-2 кубика для цикла перебора этого списка (один возьмёт строку с удалением, 2й, не обязательный, просто как хаб для стрелочек). Нужен 1 кубик с групповой регуляркой, которая выпарсить сразу эти 3 поля или 3 блока с обычными регулярками, которые будут парсить по полю за раз. Как-то так.

Если говорить о коде, то одним кубиком конечно можно. Абсолютно всё можно сделать одним кубиком кода. Осталось только найти того, кто этот кубик.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 318
Баллы
113
Так вот это и хотелось узнать, Как разбить строку с GetAttribute("innerhtml") на три столбца? Я только знаю, как сделать с трех C# кубиков. С одинаковым кодом.

Разбиваете строку с GetAttribute("innerhtml") на три столбца и добавляете в таблицу с помощью INSERT.
Что тут отвечать то?
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 318
Баллы
113
Да мне хотя бы научится парсить 3 столбца одновременно. Как это сделать? Можно код увидеть, пожалуйста?
парсить таким образом не правильно изначально. Это может вызвать череду проблем в будущем. Верный подход

И на их основе сразу формировать запрос.

Если речь строго об экшенах без кода, то нужен кубик, который регуляркой или по xpaph распрасит html каждого блока товара и скинет все эти блоки в список. По минимуму нужен 1-2 кубика для цикла перебора этого списка (один возьмёт строку с удалением, 2й, не обязательный, просто как хаб для стрелочек). Нужен 1 кубик с групповой регуляркой, которая выпарсить сразу эти 3 поля или 3 блока с обычными регулярками, которые будут парсить по полю за раз. Как-то так.

Если говорить о коде, то одним кубиком конечно можно. Абсолютно всё можно сделать одним кубиком кода. Осталось только найти того, кто этот кубик.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
Но как спаршенные данные в большом количестве внести сразу в MySql?
Я делаю следующим образом.
- Отправляю данные в словарь Dictionary<string, object>
- Словарь отправляю в список словаря List<Dictionary<string, object>>
- Список словаря отправляю в базу.

Дальше можешь изучать этот вопрос, набивать руку на практической части и будет тебе счастье. Весь код выноси в общий код, чтобы вызывать из любой строчки проекта.
 
  • Спасибо
Реакции: Gunjubasik

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 318
Баллы
113
Макета шаблона, не найдется, пожалуйста? Или хотя бы примерно как это работает?
Я делаю следующим образом.
- Отправляю данные в словарь Dictionary<string, object>
- Словарь отправляю в список словаря List<Dictionary<string, object>>
- Список словаря отправляю в базу.

Начал понимать, что такое пути к библиотеке и их построение. А сами библиотеки вообще не знаю, кроме тех, что нахожу на форуме или мне помогают тут. =)
а как далеко ты продвинулся в изучении c#?

А можно, пожалуйста, пример действия Split в коде?
Самый простой способ с помощью Split.

Всем, спасибо большое за помощь!
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
значит даже азов нет. Делай на кубиках
 

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
122
Баллы
43
Я бы брал данные GET запросом, распарсить полученный текст можно регулярками
Можно и в три кубика, если не получается дернуть одним
Дальше в в БД построчно, делать мнострочный INSERT то еще удовольствие)
Плюсы - скорость и безбраузерность шаблона, не выпрашивать код)
 
  • Спасибо
Реакции: Gunjubasik

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
В чём прикол запихивать код в как можно в меньшее количество кубиков?
Боюсь разочаровать, но на скорость работы это практически не влияет.
Смешно экономить на милисекундах, когда ваш тормозной сайт, который парсите, грузится 10-15 секунд.
 
  • Спасибо
Реакции: Sergodjan

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 318
Баллы
113
Есть где статья, которая поможет это сделать, пожалуйста?
Я бы брал данные GET запросом, распарсить полученный текст можно регулярками
Можно и в три кубика, если не получается дернуть одним
Дальше в в БД построчно, делать мнострочный INSERT то еще удовольствие)
Плюсы - скорость и безбраузерность шаблона, не выпрашивать код)
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 521
Благодарностей
1 318
Баллы
113
Почему так категорично? Я учусь по тем материалам, которые мне дают по моим ботам и понемногу усовершенствую ботов.
значит даже азов нет. Делай на кубиках

Есть где статья, которая поможет это сделать, пожалуйста?
Да мне не кубиков меньше, мне бы оптимальнее, что бы учился понемногу делать более качественные боты, как пишут нормальные кодеры. =) Поэтому я испрашиваю такие вопросы, что бы знать, кто как пишет - когда есть большой опыт. И хотел бы увидеть, как выглядит у них код, что бы поучится у них, используя код в написаниях своих ботов.
В чём прикол запихивать код в как можно в меньшее количество кубиков?
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
И хотел бы увидеть, как выглядит у них код, что бы поучится у них, используя код в написаниях своих ботов.
Так качайте сотни бесплатных шаблонов с форума. Там всё есть - и коллекции, и БД, и сплиты.
 

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
122
Баллы
43
  • Спасибо
Реакции: Gunjubasik

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
А можно, пожалуйста, пример действия Split в коде?
string[] s = v.Split(';');

Лучше используй поиск по форуму, самая верная школа, получишь множество вариантов и выберешь, то что тебе подходит.

Да мне не кубиков меньше, мне бы оптимальнее
ИМХО, оптимально, выносить всё в общий код и вызывать от туда. Хотя многие пишут на кубиках и горя не знают.
 
  • Спасибо
Реакции: Gunjubasik

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Почему так категорично? Я учусь по тем материалам, которые мне дают по моим ботам и понемногу усовершенствую ботов.
Чему учишься? ctrl+C ctrl+V ? Ты же не понимаешь код и, очевидно, не пытаешься как-то это изменить. Ты написал, что у тебя сейчас 3 c# кубика для парсинга. И код там, судя по всему, одинаковый, только xpath отличается. В то же время ты стремишься минимизировать количество кубиков. Как так получается, что эти 3 кубика до сих пор не объедены в один? Я могу сказать как. Не проканал ctrl+C ctrl+V . Объединенный код выбил ошибку, для решения которой хватило бы и азов c#.

А если задача немного поменяется и в коде нужна будет незначительная правка? Что тогда? Новый топик?

Так что пиши на кубиках, сможешь хотя бы сам правки делать. Попутно изучай код. Только начинай с базовых знаний
 
  • Спасибо
Реакции: Platon

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)