- Регистрация
- 30.05.2019
- Сообщения
- 3 531
- Благодарностей
- 1 324
- Баллы
- 113
Доброго времени. Подскажите, пожалуйста, есть ли возможность ускорить парсинг страницы (из переменной - спрашено с помощью GET запроса) или это оптимальный вариант как получать одно конкретное значение, спарсив сначала в список как сделал я?
Потому как метод выше - на парсинг одного значения, уходит примерно 1-3 секунды, а так как мне нужно спарсить допустим 6 элементов с переменной с помощью хпаз, то уходит 5-10+ секунд, что не допустимо, когда нужно обработать 10 000+ таких данных в многопотоке, так как уходи слишком много времени. Даже пытался перед парсингом основных элементов, вырезать основной блок сайта, что бы уменьшить нагрузку парсинга, но ни капельки не помогло.
Есть варианты ускорить парсинг?
P.S. + Так же что-то явно с зеннопостером не то в многопотоке (Версия 7.4.0 \ 7.7.1), есть допустим мини-бот:
1. GET запрос - скачиваем страницу
2. Парсим снипетом выше и заполняем 6 C# переменных данными xpath (на 10 символов каждая)
3. Записываем результат в блокнот одной цельной строкой - соеденив 6 C# переменных.
И в результате такого скрипта - запустить допустим на 10 потоков - скорость будет - 10 результатов предположительно за 40 секунд. По логике вещей - если запустить 100\1000 потоков, как я и сделал - должно быть 100\1000 результатов за 40 секунд, но к сожалению в зенке такая логика не действует и скорость остается примерно та же 10 результатов за 40 секунд... Как это возможно, я вообще не понимаю, даже если:
1. ПК сильный и нагрузка при 1000 потоках - 50-60% максимум что оперативы, что ЦП.
2. Поток интернета 1 ГБ
3. Самые большие зависания - это именно на парсинге данных xpath снипетом выше... Котором может занимать 10-20 секунд, для заполнения 6ти переменных...
4. Сам сайт размером не больше 1080 высоты...
5. Никаких своих Lock-ов в коде нету.
C#:
string Valuta1 = ZennoPoster.Parser.ParseByXpath(GET, "(//small[1]", "innertext").ToList()[0];
string Valuta2 = ZennoPoster.Parser.ParseByXpath(GET, "(//smalls[2]", "innertext").ToList()[0];
string Valuta3 = ZennoPoster.Parser.ParseByXpath(GET, "(//back[1]", "innertext").ToList()[0];
string Valuta4 = ZennoPoster.Parser.ParseByXpath(GET, "(//slaw[1]", "innertext").ToList()[0];
Есть варианты ускорить парсинг?
P.S. + Так же что-то явно с зеннопостером не то в многопотоке (Версия 7.4.0 \ 7.7.1), есть допустим мини-бот:
1. GET запрос - скачиваем страницу
2. Парсим снипетом выше и заполняем 6 C# переменных данными xpath (на 10 символов каждая)
3. Записываем результат в блокнот одной цельной строкой - соеденив 6 C# переменных.
И в результате такого скрипта - запустить допустим на 10 потоков - скорость будет - 10 результатов предположительно за 40 секунд. По логике вещей - если запустить 100\1000 потоков, как я и сделал - должно быть 100\1000 результатов за 40 секунд, но к сожалению в зенке такая логика не действует и скорость остается примерно та же 10 результатов за 40 секунд... Как это возможно, я вообще не понимаю, даже если:
1. ПК сильный и нагрузка при 1000 потоках - 50-60% максимум что оперативы, что ЦП.
2. Поток интернета 1 ГБ
3. Самые большие зависания - это именно на парсинге данных xpath снипетом выше... Котором может занимать 10-20 секунд, для заполнения 6ти переменных...
4. Сам сайт размером не больше 1080 высоты...
5. Никаких своих Lock-ов в коде нету.