На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Как между делом создать программу на заказ



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

Поступила задача: спарсить товары (фото и описания) с одного крупного интернет магазина и залить их на другой. Я уже касался конкретно парсинга на си шарп в одной статье, но здесь углублюсь немного в другой вопрос.

Итак, в данном случае, план парсинга получился таким:

  1. Находим урлы товаров. Для этого запускаем qvery.php, для работы ему требуется spisok.txt, в итоге он должен выводить урлы в файл url.txt.
  2. Качаем страницы и немного их обрабатываем. Для этого запускаем index.php, для работы ему требуетсяя url.txt, на выходе получается файл counter.txt.
  3. Обрабатываем файл counter.txt. С помощью программы на компьютере обрабатываем counter.txt, на выходе получается 1.txt.
  4. Создаем готовый файл с характеристиками. Используется файл на сервере etap4.php, на выходе он выдает export.csv, его надо преобразовать в export.xlxs. Две строки перенести вверх - у параметров.
  5. Заливаем характеристики в базу, используя exel.php + dop.php (для дополнительных категорий).
  6. Получаем список изображений к товарам. Используем файл kart.php, на выходе получается файл img.txt.
  7. Качаем изображения в нужный каталог и сразу переименовываем их с помощью copykart.php.
Это реальный план парсинга одной из моих работ. В данной статье я хотел бы подробнее остановиться на пункте 3. Все, кроме него, выполняются на сервере, с помощью языка PHP и CURL( подробнее можно почитать, например, здесь)

На третьем этапе нам надо обработать файл, в котором получены характеристики товаров, причесать его. Структура его примерно такая (у каждого отдельного товара):



Мы убираем ненужное с помощью вот такого кода:

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);
В код углубляться я не буду, особо сложного там ничего нет: просто определяем, если в строке имеется символ ";", то берем её содержимое и сравниваем с уже имеющимся. Отличается – добавляем параметр в массив. В конце, после обхода всех строк файла, данный массив записываем в файл. Таким образом, мы получаем список всех параметров, которые есть хотя бы у одного товара:



Вот таким образом можно создать программу на заказ, даже если заказчик об этом и не просил. В конечно итоге большинству заказчиков (если это не программа для диплома, конечно) совершенно безразлично, каким именно образом решается задача, главное – результат. А результат я умею выдавать. Обращайтесь )



тегистатьи IT, си шарп, парсинг, программирование, программы на заказ





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Где курсор, или mouseenter и mouseleave
Периодическое копирование файлов в C++ с паузой


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.