[Delphi] Парсер odnoklassniki, проблема с TIdHTTP
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
[Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-01 22:22:19.230000
|
|
|
GangstaLC
Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
|
Пишу парсер друзей из odnoklassniki.ru. Суть - программа залогинивается под аккаунтом, потом в отдельном потоке из списка с ID'ами пользователей выводит в текстовое поле ID'ы их друзей. Так вот, через штук 5-7 пропарсенных профилей GET запрос начинает возвращать только пустоту (''), (когда возвращает пустоту - ответ сервера "HTTP/1.1 204 No Content") или просто поток завершается. Помогите выявить проблему. Сразу извинюсь, код местами безобразный т.к. программа на стадии отладки. Delphi 7, Indy 9. Исходники: http://rghost.ru/36286274
|
|
|
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-02 18:09:33.993333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
может там аякс юзается и надо другие запросы?
|
|
|
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-02 18:37:19.620000
|
|
|
GangstaLC
Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
|
У меня есть функция - получить друзей человека по ссылке на профиль (/profile/ID), у нее по сути алгоритм такой: 1) Заходит на страницу друзей человека (http://odnoklassniki.ru/ID человека/friends) 2) Парсит страницу, сохраняет кол-во друзей в переменную 3) Разбив кол-во друзей на страницы в цикле запросами получает ссылки на друзей (ajax) Так вот в действии 3) там используюется именно ajax, причем программа получает по этому запросу данные, а в шаге 1) простой GET запрос (http://odnoklassniki.ru/ID человека/friends), так вот "HTTP/1.1 204 No Content" возвращает еще запрос в шаге 1), а там (повторюсь) никакой не ajax. Есть еще какие идеи в чем проблема? Может в самой Indy проблема какая? P.S. 10-15 профилей первых проходят парсинг, а вот дальше такая проблема проявляется.
|
|
|
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 02:00:28.940000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
ну хз… максимум что могу посоветовать - сравнивай сниффером запросы. может кукисы или какая-нить ещё информация в input-ах левая должна быть
|
|
|
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 08:43:17.593333
|
|
|
GangstaLC
Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
|
Если должна быть еще какая то информация, почему первые 10-15 запросов проходят на ура? Чтож, попробую без indy реализовать.
|
|
|
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 09:46:13.456666
|
|
|
Barkass$
Сообщений: 1854
Оценки: 40
Присоединился: 2008-11-11 12:19:45.216666
|
Юзай Синапс. Подобных проблем с ним не наблюдал.
|
|
|
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 13:54:41.790000
|
|
|
GangstaLC
Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
|
Его как раз и хотел использовать; как перенесу на него - по результату отпишусь.
|
|
|
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 16:45:23.463333
|
|
|
Barkass$
Сообщений: 1854
Оценки: 40
Присоединился: 2008-11-11 12:19:45.216666
|
Индейцев давно уже обсерают не скрывая этого. Они скажем так, по свойму хороши. В своё время они мне дали хорошую практику. Но лично в своих программах, я стараюсь их не использовать, ибо зачастую в них всплывают непредвиденные проблемы, а так же они не имеют встроенных возможностей ввиде многопоточности, прокси и т.д. Даже если брать просто подключение через SSL средствами idHTTP - вылезает геморой, требующий стабильные библиотеки openssl, с которыми опять же у инди могут возникнуть куча гемороя. Синапс хоть сейчас и не развивается (насколько я знаю), зато работает в полне адеватно, распростроняется бесплатно, возможностей на порядок больше чем у инди. Поэтому попробуй использовать его. Если будут вопросы, обращайся.
|
|
|
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 18:12:10.346666
|
|
|
GangstaLC
Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
|
Заинтересовала пара моментов. quote:
ORIGINAL: Barkass$ а так же они не имеют встроенных возможностей ввиде многопоточности У меня приложение по сути: есть TStringList из ссылок, действуют несколько потоков, каждый из них берет ссылку из списка, парсит ее, выводит информацию, и соответственно нужно синхронизировать чтобы потоки не взяли одну и ту же ссылку. Я думаю с TThread это реализовать. А что за многопоточность в synapse? quote:
ORIGINAL: Barkass$ Даже если брать просто подключение через SSL средствами idHTTP - вылезает геморой, требующий стабильные библиотеки openssl, с которыми опять же у инди могут возникнуть куча гемороя. C SSL не работал, но как помню для TIdHTTP нужно было подключать 2 либы. Как SSL реализуется в synapse? Нужно ли подключать динамические библиотеки?
|
|
|
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 19:27:45.840000
|
|
|
Barkass$
Сообщений: 1854
Оценки: 40
Присоединился: 2008-11-11 12:19:45.216666
|
В синапсе (если мне не изменяет память), есть готовая функция, которой можно реализовать многопоточность, называется она m_oFastSender (лучше покапаться в исходниках). Вообще TStringList в связке с потоками будет достаточно. TThread не советую, тем более синхронизацию, ибо она только замедлит работоспособность программы. К синапсу тоже нужно подключать 2 библиотеки для работы с SSL. libeay32 и ssleay32. При этом можно тупо прописать в uses openssl и все будет работать сразу. К idHttp SSL я не подключал, но когда она потребовалась для idSmtp, т.е. для отправки почты, вылезло Очень много гемороя. То библиотеки ему не нравились, то авторизацию не хотел проходить…
|
|
|
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-03 20:17:15.513333
|
|
|
GangstaLC
Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
|
Спасибо за помощь. С SSL разобрался, все оказалось на удивление просто. А насчет потоков - т.е. писать на чистом API? Отхожу от темы, но все же, как строить архитектуру взаимодействия с потоками? К примеру: Класс, в нем массив указателей на потоки. При запуске опции программы - должны создаться потоки по указателям в массиве, и из списка ссылок (список находится в классе где объявлен этот же массив потоков) должны пройти по каждой, но не должны проходить по одинаковым (т.е. многопоточность тут для увеличения производительности переходов по ссылкам), так как каждому потоку получать ссылку из списка и не брать одинаковых? (Есть идея - при создании потока передавать указатель на класс со списком, а там уже не допускать взятия по одной ссылке несколькими потоками, в правильную ли сторону думаю?)
|
|
|
RE: [Delphi] Парсер odnoklassniki, проблема с TIdHTTP - 2012-02-06 17:16:17.240000
|
|
|
GangstaLC
Сообщений: 71
Оценки: 0
Присоединился: 2009-10-11 20:55:22.796666
|
Перевел на Synapse, ошибки улетучились. Спасибо всем за помощь.
|
|
|
|
|