Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 03.03.2013, 03:30   #1
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Каталогизатор kinopoisk.ru

Решил написать сия программа для ненавистной Ubunt'ы, вроде не совсем все и сложно:
  1. Отправил запрос поиска
  2. Принял страницу с результатами
  3. Распарсил
  4. Вывел как нужно
Только загнулось все на 2 пункте, так как кинопоиск имеет анти-бот защиту и выкидывает капчу после запроса.
Пытался в HttpWebRequest менять userAgent на реальный - не помогло.
//Как поступит?
Нашел такой скрипт, там авторизация. Но как это сделать под С#?
http://wolf-et.ru/php/kinopoisk-ru-parser/
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 03.03.2013, 12:57   #2
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Каталогизатор kinopoisk.ru

Все, научился нормально отправлять запрос:
private static string SendPost (string urlstring postData)
    {
        try {
            
//отправка запроса
            
var httpWebRequest = (HttpWebRequest)WebRequest.Create (url);
            
httpWebRequest.AllowAutoRedirect false;
            
httpWebRequest.Method "GET";
            
httpWebRequest.Host "www.kinopoisk.ru";
            
httpWebRequest.UserAgent "User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)";
            
httpWebRequest.Headers.Add (HttpRequestHeader.AcceptLanguage, @"ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
            
httpWebRequest.Headers.Add (HttpRequestHeader.AcceptEncoding, @"gzip, deflate");
            
httpWebRequest.AutomaticDecompression DecompressionMethods.Deflate DecompressionMethods.GZip;
            
httpWebRequest.ContentType "application/x-www-form-urlencoded";
            
httpWebRequest.ProtocolVersion HttpVersion.Version11;
            
httpWebRequest.Referer "http://kinopoisk.ru";
        
            
CookieContainer cookie = new CookieContainer ();
            
httpWebRequest.CookieContainer cookie;
            
            var 
buffer Encoding.ASCII.GetBytes (postData);
            
httpWebRequest.ContentLength buffer.Length;
            
//принятие ответа
            
HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse ();
            
CookieCollection cookies = new CookieCollection ();
            
cookies response.Cookies;
            
Encoding responseEncoding Encoding.GetEncoding (response.CharacterSet);
            
StreamReader strReader = new StreamReader (response.GetResponseStream (), responseEncoding);
                
            
string htmlText strReader.ReadToEnd ();
                
            
response.Close ();
            
//Console.WriteLine (htmlText);
            
return htmlText;
        } catch (
Exception e) {
            
//Console.WriteLine (e.Message);
            //return false;
            
return e.Message "\n" e.Source;
        }
    } 
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 03.03.2013, 15:30   #3
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Каталогизатор kinopoisk.ru

Как же перевести "терминатор 3" в "%F2%E5%F0%EC%E8%ED%E0%F2%EE%F0+3" ?
Uri.EscapeUriString не помогла, а HttpUtility работает только в ASP.NET
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 03.03.2013, 17:03   #4
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Каталогизатор kinopoisk.ru

Сообщение от Костян Посмотреть сообщение
HttpUtility работает только в ASP.NET
С чего бы это? Всё работает и в обычном проекте.
(Offline)
 
Ответить с цитированием
Старый 03.03.2013, 19:02   #5
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Каталогизатор kinopoisk.ru

Может у меня .NET урезанный, но не робит.
Как сделать мультифильтор GetFiles()?
Эот:
string mask "*.avi|*.mkv";
Directory.GetFiles(path,mask,SearchOption.TopDirectoryOnly
не робит, как и этот:
private static string[] GetFiles (string sourceFolderstring filtersSystem.IO.SearchOption searchOption)
        {
            return 
filters.Split ('|').SelectMany (filter => Directory.GetFiles (sourceFolderfiltersearchOption)).ToArray ();
        } 
Что подскажете?
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 03.03.2013, 23:50   #6
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Каталогизатор kinopoisk.ru

filters.Split ('|').SelectMany 
Вроде как функциональность 3.5+(4.0+?) - LINQ.
сделай через foreach.

По поводу HttpUtilits - проверял на 2.0 /NET - работает в любом проекте, нужно только подключить Syste.Web( не знаю будет ли работать в моно)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 20:22.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com