Остановка парсинга (переполнение памяти)

Тема в разделе "Решение проблем с использованием программы", создана пользователем pagemaster, 24 ноя 2017.

  1. pagemaster

    pagemaster New Member Пользователи

    Регистрация:
    15 янв 2015
    Сообщения:
    43
    Добрый день.
    Настроил парсинг сайта автозапчастей, особенность в том, что в каждой запчасти есть список марок и моделей автомобилей, к которым подходит данная запчасть, и нужно парсить только запчасти к определенным маркам. Но дело даже не в этом, это я всё настроил и всё правильно парсит, дело в том, что при запуске парсинга (в 10 потоков), программа проходит 30-40 ссылок на скорости 10 потоков и потом останавливается (сбрасывает потоки и останавливается парсинг). В логах парсинга всё "зеленое" и никаких ошибок нет.
    В чем может быть проблема? Проект парсинга прилагаю.
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 100 постов.**
     
  2. pagemaster

    pagemaster New Member Пользователи

    Регистрация:
    15 янв 2015
    Сообщения:
    43
    и в 3 потока останавливается после 27 товаров (на 24-м получается начинает выключать потоки)
     
  3. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Потоки "вылетают" из-за переполнения памяти ввиду огромного объема обрабатываемых данных у некоторых товаров (много циклов в повторяющихся границах).

    2017-11-24_18-14-21.png

    2017-11-24_18-45-51.png

    Если парсить в 1 поток, возникновение ошибки маловероятно! Но, обработка данных будет очень долгая!

    Выход из этой ситуации я вижу только 1 - настроить проект таким образом, чтобы обойти обработку такого огромного объема данных.

    PS: Кто вам настраивал проект?
     
  4. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Можно ограничить количество циклов повторяющейся границы парсинга 2, скажем, до 100, но будет ли это приемлемо...
     
  5. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Вот адрес одной из ссылок с большим объемом обрабатываемых данных
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
     
  6. pagemaster

    pagemaster New Member Пользователи

    Регистрация:
    15 янв 2015
    Сообщения:
    43
    Да, есть там такое)) видел списки и побольше, на 1800 позиций)

    проект я сам настраивал)) мне нужно эти огромные списки моделей проходить циклом, чтобы отобрать только нужные, а IF там для проверки есть ли вхождение нужной марки или нету... чтобы не писать в файл всё, так как тогда файл "миллионник" получится.
     
  7. pagemaster

    pagemaster New Member Пользователи

    Регистрация:
    15 янв 2015
    Сообщения:
    43
    может как то можно увеличить объем памяти? Или очищать после каждого прохода? Это мысли в слух))
     
  8. pagemaster

    pagemaster New Member Пользователи

    Регистрация:
    15 янв 2015
    Сообщения:
    43
    у меня комп хороший, должен тянуть)) это в программе стоит какое то ограничение на объем данных в памяти или всё-таки в компьютере не хватает её для обработки?

    Intel i5 3.5GHz, 8Gb RAM (4 с них точно свободны всегда, ну и файлы подкачки включены)

    если будет работать 80 часов, то это еще нормально, главное чтобы не выбило на 79-м часе)
     
  9. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    А вот, что получается при вставке границ парсинга в шаблон вывода (перед работой всех макросов). Текстовый файл 80 мб - нереально много!
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    Ограничение поп памяти устанавливает система (около 2,5 ГБ).

    Поставьте 1 поток и сделайте ограничение по максимальному количеству циклов у ПГ2 в окне ctrl+5.
     
  10. pagemaster

    pagemaster New Member Пользователи

    Регистрация:
    15 янв 2015
    Сообщения:
    43
    ограничивать не могу, так как нужно все данные обработать... а в один поток так же выбивает, хотя приоритетность процесса ставлю на максимум и оперативной памяти освобожаю для программы по максимуму
    Как можно изменить проект, что упростить/ускорить/починить парсинг?))
     
  11. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    У меня нет решения вашей задачи. Вы видели, какие там объемы данных.
     
  12. pagemaster

    pagemaster New Member Пользователи

    Регистрация:
    15 янв 2015
    Сообщения:
    43
    как тогда сделать парсинг не через повторяющуюся границу?
     
  13. pagemaster

    pagemaster New Member Пользователи

    Регистрация:
    15 янв 2015
    Сообщения:
    43
    сделал без повторяющейся границы, потом файл придется еще php скриптом обрабатывать.
     
  14. pagemaster

    pagemaster New Member Пользователи

    Регистрация:
    15 янв 2015
    Сообщения:
    43
    Подскажите как ограничить в размере обычную границу парсинга?
    Есть таблица, которая на разных страницах разного размера, как мне сделать, чтобы таблица не вставлялась, если она длиннее, к примеру, 1000 символов?
    Пробовал сделать через повторяющуюся границу и циклами перебирать <tr>...</tr> ограничив при этом максимальное количество циклов, но когда таблица на 1000 циклов, то мне еще ни разу не хватило терпения дождаться результата предпросмотра))
     
  15. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Использовать макрос [COPY]

    2017-11-27_18-50-23.png

    Либо, как вы сказали, ограничить максимальным количеством циклов повторяющейся границы.
     
  16. pagemaster

    pagemaster New Member Пользователи

    Регистрация:
    15 янв 2015
    Сообщения:
    43
    Возможно ли обрезать таблицу до получения границ парсинга? По идее это можно сделать через "поиск-замена для загружаемого кода" с помощью регулярных выражений (я так думаю)... Вот только как это сделать?)) Моих познаний в регулярных выражениях хватает только на <table>.*</table> - выделит содержимое таблицы, а как выделить только часть?..
    Потому что таблицу нужно обрезать до определения границ, так как потом граница получается огромнейшая и любые операции с ней проходят десятками минут.
     
  17. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Придется подождать пару дней для доработки функционала поиск-замены.
     
  18. pagemaster

    pagemaster New Member Пользователи

    Регистрация:
    15 янв 2015
    Сообщения:
    43
    а еще было бы круто, если бы сделали возможность до записывать файл с использованием DYNAMICVALUES, ведь при повторном запуске можно взять "шапку" файла и по ней дальше работать с характеристиками
     
    Root нравится это.
  19. pagemaster

    pagemaster New Member Пользователи

    Регистрация:
    15 янв 2015
    Сообщения:
    43
    Дайте, пожалуйста, знать, когда добавите функционал
     
  20. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Хорошо, подзатянулось.
     

Поделиться этой страницей