Instagram: медленный парсинг

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
Приветствую!
Ребята, помогите решить проблему:

У меня есть список ссылок вида:
instagram.com/p/0BHkO2Mdfe/

И мне нужно достать логин владельца этой фотографии.
Делаю я это следующим образом: отправляю GET-запрос, получаю содержимое и там уже ищу простой регуляркой. Все работает отлично, за исключением одного - ВСЕ ОЧЕНЬ МЕДЛЕННО!

Если подключать потоки до 6, то скорость парсинга растет с каждым потоком.
Но вот, если я включу 20-30-40-50 - то скорость по-прежнему будет 5-7 обработанных ссылок в секунду.

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

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
скорость должна быть явно больше.
при моих 8 мегабитах без проксей тяну 20 страниц/с
вот пример кода для теста: выполняется 1000 запросов на одну страницу
Код:
string url = "http://instagram.com/p/0BHkO2Mdfe/";
var startime = DateTime.Now;
var outlist = new List<string>();
System.Threading.Tasks.Parallel.For(0, 1000, new System.Threading.Tasks.ParallelOptions {MaxDegreeOfParallelism=100}, p => {
    var response = ZennoPoster.HttpGet(url: url, Encoding:"UTF-8", Timeout: 60000);
    var username = Regex.Match(response, "(?<=owner\":\\{\"username\":\")[^\"]+").Value;
    if (username == "") return;
    outlist.Add(username);
});
return DateTime.Now.Subtract(startime).ToString();
может дело в инстансах. шаб зациклен?
 
  • Спасибо
Реакции: orka13

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Отключите браузер в свойствах проекта
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
скорость должна быть явно больше.
при моих 8 мегабитах без проксей тяну 20 страниц/с
вот пример кода для теста: выполняется 1000 запросов на одну страницу
Вернулся такой ответ: 00:01:04.8977119
Я так понимаю, что на 1000 запросов ушло 64 секунды, только понять не могу что означает длинный набор цифр после точки.
И имеет ли смысл такой эксперимент, если обращение шло только на 1 ссылку?

может дело в инстансах. шаб зациклен?
Инстансы подгружаются только тогда, когда включен браузер в настройках, верно?
Если да, то браузер у меня отключен -> дело не в них.

Если они (инстансы всегда работают), то как их оптимизировать?

Отключите браузер в свойствах проекта
Я отключаю ещё на стадии написании проекта.)
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
да - 64 секунды.
давай список адресов - сделаю тебе тест на весь список. Пока я думаю что это не важно, а важно оценить нагрузку. Получается больше 15 запросов в секунду у тебя быть не может. Если канал явно больше пробуй каждый запрос через отдельный прокси слать.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113
да - 64 секунды.
давай список адресов - сделаю тебе тест на весь список. Пока я думаю что это не важно, а важно оценить нагрузку. Получается больше 15 запросов в секунду у тебя быть не может. Если канал явно больше пробуй каждый запрос через отдельный прокси слать.
А смысл теста, если он не на моей машине? :-)
Там список на 50+ тыс. ссылок, я его уже распарсил, правда потратил на это 2 с лишним часа.
Что хоть значит набор цифр после точки, что выдается после выполнения кода C#?
И, ещё: в коде вроде есть часть про парсинг логина автора регуляркой, но он никуда не записывается. А можно ли как-то простенько доработать, логины записывались в список, например? А то 15 логинов\сек всяко лучше чем 5-7. Был бы крайне признателен.

P.S.
skorostineta.png
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
Что хоть значит набор цифр после точки, что выдается после выполнения кода C#?
время выполнения скрипта в микросекундах
по поводу доработки только скайп.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
пример скрипта делает 100 одновременных запросов из "списка в 1000 строк" пока "не закончится список"
 

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