Как между делом создать программу на заказ
При выполнении разнообразных работ мне нередко приходится создавать различные программы на заказ, хотя заказчики об этом могут не догадываться. Такие приложения выполняют часть работы, автоматизируют процесс. Давайте разберем конкретный пример.
Поступила задача: спарсить товары (фото и описания) с одного крупного интернет магазина и залить их на другой. Я уже касался конкретно парсинга на си шарп в одной статье, но здесь углублюсь немного в другой вопрос.
Итак, в данном случае, план парсинга получился таким:
- Находим урлы товаров. Для этого запускаем qvery.php, для работы ему требуется spisok.txt, в итоге он должен выводить урлы в файл url.txt.
- Качаем страницы и немного их обрабатываем. Для этого запускаем index.php, для работы ему требуетсяя url.txt, на выходе получается файл counter.txt.
- Обрабатываем файл counter.txt. С помощью программы на компьютере обрабатываем counter.txt, на выходе получается 1.txt.
- Создаем готовый файл с характеристиками. Используется файл на сервере etap4.php, на выходе он выдает export.csv, его надо преобразовать в export.xlxs. Две строки перенести вверх - у параметров.
- Заливаем характеристики в базу, используя exel.php + dop.php (для дополнительных категорий).
- Получаем список изображений к товарам. Используем файл kart.php, на выходе получается файл img.txt.
- Качаем изображения в нужный каталог и сразу переименовываем их с помощью copykart.php.
На третьем этапе нам надо обработать файл, в котором получены характеристики товаров, причесать его. Структура его примерно такая (у каждого отдельного товара):
Мы убираем ненужное с помощью вот такого кода:
string text = System.IO.File.ReadAllText(@"C:\Users\про\Dropbox\parser2\counter.txt"); string newtext = text.Replace("<>", ""); newtext = newtext.Replace("</>", ";"); newtext = newtext.Replace(" ;", ""); newtext = newtext.Replace("Артикул;", ""); System.IO.File.WriteAllText(@"C:\Users\про\Dropbox\parser2\1.txt", newtext);И получаем следующее:
В принципе, это можно было сделать и с помощью PHP, но с символами “<” и “>” были какие-то проблемы, не хотелось разбираться. Плюс к этому, создать программу на заказ для компьютера необходимо было еще и из-за списка параметров. Дело в том, что не у каждого спарсенного товара есть все параметры (всего их более двухсот в данном случае), а проставлять нуль или просто пробел для отсутствующего параметра неразумно – их просто не должно быть в базе данных (там интересная структура базы данных на сайте акцепторе, необычная CMS). Так что нам надо пробежать по файлу и выделить уникальные характеристики. Делает это следующий код:
string line; string[] mass = new string [200]; int chet = -1; int flag = 0; string[] lines = System.IO.File.ReadAllLines(@"C:\Users\про\Dropbox\parser2\1.txt"); for (int i = 0; i < lines.Length; i++) { flag = 0; if (lines[i].Contains(";")) { string ttt = lines[i].Replace("\t", String.Empty); ttt = ttt.Trim(); for (int j = 0; j < 200; j++) { if (mass[j] == ttt) flag = 1; } if (flag == 0) { chet++; mass[chet] = ttt; } } } for (int i = 0; i < mass.Length; i++) { line = line + mass[i]; } System.IO.File.WriteAllText(@"C:\Users\про\Dropbox\parser2\res.txt", line);В код углубляться я не буду, особо сложного там ничего нет: просто определяем, если в строке имеется символ ";", то берем её содержимое и сравниваем с уже имеющимся. Отличается – добавляем параметр в массив. В конце, после обхода всех строк файла, данный массив записываем в файл. Таким образом, мы получаем список всех параметров, которые есть хотя бы у одного товара:
Вот таким образом можно создать программу на заказ, даже если заказчик об этом и не просил. В конечно итоге большинству заказчиков (если это не программа для диплома, конечно) совершенно безразлично, каким именно образом решается задача, главное – результат. А результат я умею выдавать. Обращайтесь )
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.