Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Ошибка парсинга "http/1.1 404 Not Found"


Автор: ruslandlion 13.9.2014, 20:24
Программа берёт определенные данные с сайта, но по всей видимости при очередной итерации цикла, встречает несуществующую страницу , после чего аварийно завершается и выдаёт следующую ошибку 
user posted image
Я очень плохо разбираюсь в программировании сетевых технологий, поэтому если можно объясните на просторечивом языке. Как я понял, это значит, что программа пытается получить данные со страницы , которой нет и вылетает, как заставить цикл пропустить эту страницу и перейти к следующей итерации?

Автор: Poseidon 14.9.2014, 01:35
с помощью try...except и Continue. 

Автор: ruslandlion 14.9.2014, 10:08
а что между try и except  заносить? как поймать эту ошибку? Вообще долго сидел и ужаснулся, get запрос к некоторым видео в контакте не проходит из компонента idhttp1

Автор: drkot 14.9.2014, 10:33
Цитата(ruslandlion @  14.9.2014,  11:08 Найти цитируемый пост)
не проходит из компонента idhttp1

Это как? Протокол другой?

Автор: ruslandlion 14.9.2014, 11:27
Цитата

Это как? Протокол другой? 

Нет, я пишу прогу, которая автоматически переходит к нужному мне видео в контакте и копирует его название и количество просмотров. Некоторые видео успешно парсятся, но на некоторых компонент idhttp1  не гетится 
Код

data2:= idhttp2.Get('http://vk.com/video-'+data3) ;


http://vk.com/videos-371313 вот группа , вот видео которое не заносится через эту команду  http://vk.com/video-371313_169938098 
Код

data2:= idhttp2.Get('http://vk.com/video-'+data3) ;
 

причём я напрямую копировал путь к нему , вставлял вот так 
Код

data2:= idhttp2.Get('http://vk.com/video-371313_169938098') ;


в data2 попадает почему то не само видео , а список видео http://vk.com/videos-371313 

Одни видюшки проходят парсинг, благополучно передаётся HTML код, заносится информация о количестве просмотров, другие, упорно не лезут в idhttp1

Автор: Poseidon 14.9.2014, 13:40
Цитата(ruslandlion @  14.9.2014,  10:08 Найти цитируемый пост)
а что между try и except  заносить?
Все где может возникать ошибка, которую надо обработать.

Автор: drkot 14.9.2014, 19:22
Цитата(ruslandlion @  14.9.2014,  12:27 Найти цитируемый пост)
другие, упорно не лезут в idhttp1

так наверно надо следить что сервер отдал? и если страница не та, то наверно нужно это учитывать?

Автор: ruslandlion 15.9.2014, 10:34
Цитата

с помощью try...except и Continue. 


написал следующий код 

Код

try

 data2:= idhttp2.get('http://vk.com/video-'+data3) ;

  a1:= Pos(teg2,data2) ;

 a1:= a1+length(teg2);
a1:=a1+6;
data2:= copy(data2,a1,200);
b1:= Pos('<\/b>',data2);
data2:=copy(data2,1,b1-1);  // число просмотров найдено
 memo1.Lines.Add(data2);
 // записываем число просмотров в заголовок файла
 data2:= idhttp2.Get('http://vk.com/video-'+data3) ;
   a1:= Pos(teg3,data2) ;

a1:= a1+length(teg3);  // начало названия видео
data2:= copy(data2,a1,10000);
b1:= Pos(',"desc":"',data2);
data2:=copy(data2,1,b1-1);// название видео найдено
 memo1.Lines.Add(data2);
Memo1.Lines.SaveToFile(putkfailu+memo1.Lines[0]+txt); // записываем название видео в файл
 Application.ProcessMessages;
except
on E : Exception do
memo1.Lines.Add(E.ClassName +'ошибка , с сообщением '+ E.Message);


   end;
    end;



end.


всё равно не работает, выдаёт эту ошибку 

user posted image

Даже ОТ НАЧАЛА ВСЕГО КОДА писал try и в конце except , нифига :(

Автор: Akella 15.9.2014, 12:50
Тебе нужно взять какой-нибудь сниффер и посмотреть, что передаёт браузер серверу. Чтобы ты тоже самое передавал.

Куки включены? Редирект включен?

Автор: drkot 15.9.2014, 13:38
Цитата(ruslandlion @  15.9.2014,  11:34 Найти цитируемый пост)
нифига :(

во первых при отладке эксепшены всегда выскакивают (даже есть try есть)
Во вторых Вы вообще читать умеете? Протокол HTTP хоть поверхностно знаете?
Написано же на чистом английском языке... "нет доступа" 
Обрабатывайте исключение, а не 
Цитата(ruslandlion @  15.9.2014,  11:34 Найти цитируемый пост)
ОТ НАЧАЛА ВСЕГО КОДА

истерите...

Автор: ruslandlion 15.9.2014, 14:06
drkot не надо со мной таким тоном разговаривать , если Вы что то знаете не нужно выпендриваться , я русским языком вначале написал, что очень плохо разбираюсь в сетевом программировании , так что неизвестно ещё , кто читать не умеет

Добавлено через 7 минут и 34 секунды
Цитата

Тебе нужно взять какой-нибудь сниффер и посмотреть, что передаёт браузер серверу. Чтобы ты тоже самое передавал.

Куки включены? Редирект включен? 


Спасибо за совет, насчёт куки и редирект я честно говоря незнаю, что это такое. Частично помогло отключение в Delphi  Tools- Language Exception- Stop on Delphi Exeptions , некоторые исключения отрабатываются. Но всё равно прога зависать начала, после парсинга некоторых видео.

Автор: Akella 15.9.2014, 14:47
Цитата(ruslandlion @  15.9.2014,  14:06 Найти цитируемый пост)
Спасибо за совет, насчёт куки и редирект я честно говоря незнаю, что это такое.


Найми себе программиста.

Автор: Akella 15.9.2014, 15:20
Цитата(ruslandlion @  15.9.2014,  14:06 Найти цитируемый пост)
я русским языком вначале написал, что очень плохо разбираюсь в сетевом программировании , так что неизвестно ещё , кто читать не умеет


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

Автор: Keeper89 10.10.2014, 01:36
А где код получения data3 и т.д.?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)