Как ускорить процесс парсинга информации

pol007

Client
Регистрация
20.05.2014
Сообщения
122
Благодарностей
4
Баллы
18
Написал шаблон,

В шаблоне 2 таблицы с настройками "Загружать из файла, сохранять изменения",
Из одной таблицы берём ссылку, запускаем её, парсим всё что нужно, в другую таблицу пишем результат. Отключил картинки, стили, флеш.

Самих ссылок в таблице1 около миллиона. Запускаю в Зенке на 40 потоков, но больше 8 никак не получается, скачет от 0 до 8 потоков. 1000 ссылок обрабатывает около 10 - 20 минут. Подумал что может быть потоки ждут очереди на запись в файлы источника ссылок и результат, и из-за этого Зенка не может больше потоков запустить. Решил скопировать шаблон в 5 копиях, и подвязал для каждого из них свой файл источник ссылок, и файл результат (для таблиц). Запустил 5 проектов, на 10 потоков каждому. Результат тот же, общее количество потоков не подымается больше 7-8.

Как правильно организовать парсинг в данном случае ? Может попробовать сделать цикл в шаблоне, не перезапускать его каждый раз?
 

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

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

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 391
Благодарностей
479
Баллы
83
Конечно если каждый раз перезапускать шаб для парсинга каждой ссылки, то много времени тратится впустую. Можно зациклить, но не бесконечно, а, допустим, на 10 циклов.
ЗЫ. А парсить обязательно через морду, может быть запросами? Скорость вырастет в разы.
 

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

Конечно если каждый раз перезапускать шаб для парсинга каждой ссылки, то много времени тратится впустую. Можно зациклить, но не бесконечно, а, допустим, на 10 циклов.
ЗЫ. А парсить обязательно через морду, может быть запросами? Скорость вырастет в разы.
если парсинг еще и не на запросах то вообще край
 

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 391
Благодарностей
479
Баллы
83

pol007

Client
Регистрация
20.05.2014
Сообщения
122
Благодарностей
4
Баллы
18
Хорошо, ребята спасибо... сейчас организуем по новому попробую на запросах, и циклы сделаю
 

pol007

Client
Регистрация
20.05.2014
Сообщения
122
Благодарностей
4
Баллы
18
Как тип строку преобразовать в HtmlElement ? на Си# Вроде какие то директивы надо указывать?

Я получаю GET запросом html код страницы, делая изначально экшином я находил необходимый объект. И потом уже там регулярками отбирал всё что мне нужно было.
Теперь запрос мне возвращает строку, как мне правильно необходимый кусок выдрать? Регуляркой будет не очень удобно.

Наверное можно как то преобразовать строку в тип данных, у которого есть метод FindElementsByAttribute ?
 
Последнее редактирование:

doc

Client
Регистрация
30.03.2012
Сообщения
8 613
Благодарностей
4 601
Баллы
113
Как тип строку преобразовать в HtmlElement ? на Си# Вроде какие то директивы надо указывать?

Я получаю GET запросом html код страницы, делая изначально экшином я находил необходимый объект. И потом уже там регулярками отбирал всё что мне нужно было.
Теперь запрос мне возвращает строку, как мне правильно необходимый кусок выдрать? Регуляркой будет не очень удобно.

Наверное можно как то преобразовать строку в тип данных, у которого есть метод FindElementsByAttribute ?
нужно подключать htmlagilitypack. одной строкой тут н еобойтись
 

pol007

Client
Регистрация
20.05.2014
Сообщения
122
Благодарностей
4
Баллы
18
нужно подключать htmlagilitypack. одной строкой тут н еобойтись
Понятно, тогда пока что обойдусь малой кровью.
Подскажите, пишу вот такой код
Код:
var Proverit = project.Variables["Result"].Value;

if
    (Proverit.Contains("Страница не ") || Proverit.Contains("Пользователь "))
    
    {
        project.Variables["Prodolgit"].Value = false;
        //return false;
    }
ругается неявное преобразование типа bool в string
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 613
Благодарностей
4 601
Баллы
113
project.Variables["Prodolgit"].Value = "false";
 
  • Спасибо
Реакции: pol007

pol007

Client
Регистрация
20.05.2014
Сообщения
122
Благодарностей
4
Баллы
18
Нас Get запросе, скорость возросла на порядок :-), мой парсер превратился в просто лангольера, он её сжирает

Ещё вопрос, при наборе метода (Contains) Proverit.Contains(
у меня выскакивала контекстная подсказка, после того как я удалил свои директивы, с которыми просто баловался, перестала контекстная подсказка этого метода выпадать... это может с этим связано ?
 

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