Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > c# парсинг


Автор: cppGhost 5.4.2014, 22:11
Доброго времени суток. Вообще не знаю насколько корректно спрашивать такие вещи, но ситуация такая. Для работы решил автоматизировать процесс сбора информации по яндекс директу. http://wordstat.yandex.ru/#!/?regions=225&words=%D0%B0%D0%B2%D1%82%D0%BE эту страницу я хочу "прочитать" программно. делаю примерно так
Код

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            if (response.StatusCode == HttpStatusCode.OK)
            {
                Stream receiveStream = response.GetResponseStream();
                StreamReader readStream = null;
                if (response.CharacterSet == null)
                    readStream = new StreamReader(receiveStream);
                else
                    readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
                string data = readStream.ReadToEnd();

                if (true == data.Contains("b-phrases__info"))
                {
                    string g = "fff";
                }

                response.Close();
                readStream.Close();
            }
 
но в html коде страницы нет информации, которая отображается в главной таблице. как еще тогда можно эту таблицу прочитать, чтобы потом обрабатывать? спасибо

Автор: cppGhost 5.4.2014, 22:32
Хотя я не понимаю, ведь клиент по сути получает html код, котоырй должен отобразить. Но при этом этой таблицы в явном виде нет. В чем тут хитрость, тоже хотелось бы узнать. Ведь через chrome->инструменты_разработчика я код этой таблицы вижу

Автор: crz 5.4.2014, 23:23
Когда вы заходите через браузер, вы ведь авторизированы в яндексе ? А когда скачиваете html код страницы , то не авторизированы, может быть разница в этом ?

Автор: Cheloveck 6.4.2014, 02:13
К тому же табличка строится javascript`ом.

Автор: cppGhost 6.4.2014, 08:21
по поводу авторизации: я сравнивал результат, полученный программно и просмотр кода страницы в брауузере. и результат вроде одинаковый. а вот по поводу js, каким тогда инструментом вообще возможно выцепить эту табличку?

Автор: Cheloveck 6.4.2014, 10:50
Цитата(cppGhost @  6.4.2014,  09:21 Найти цитируемый пост)
по поводу авторизации: я сравнивал результат, полученный программно и просмотр кода страницы в брауузере. и результат вроде одинаковый. 

Повторяю ещё раз, таблица строится javascript`ом. Изначально старница выглядит одинаково для залогиненного и незалогиненного пользователя. Дальше js шлёт ajax запрос и получает данные только для залогиненного пользователя и строит таблицу. То, что тебе показывает браузет, когда ты просишь исходный код страницы, -- это изначальный html, без таблицы.

Цитата(cppGhost @  6.4.2014,  09:21 Найти цитируемый пост)
по поводу js, каким тогда инструментом вообще возможно выцепить эту табличку? 

Только браузером или отдельным js-движком. При этом надо помнить, что этот скрипт будет делать ajax-запрос, которому нужны твои авторизационные куки. 
Ответ ajax-запроса, кастати, зашифрован, так что слать руками запрос тоже не вариант.

Я бы тебе посоветовал бросить заниматься *рнёй и поискать нужные API, например http://api.yandex.ru/

Автор: cppGhost 6.4.2014, 13:35
спасибо за ссылку, но, боюсь, что мне не подойдет, так как там стоят ограничения. а мои нужды в них сильно не вписываются. в принципе у меня родилась такая идея (хоть это и есть "заниматься *рней"). я открываю окошка браузера, имитирую клик на текстовом поле, имитирую ввод с клавиатуры, имитирую клик на кнопке. нужная мне цифра  из статистики находится всегда в одном и том же месте (имею в виду координаты на мониторе), поэтому можно попробовать распознать цифры прямо с экрана. насколько такое реально?

Автор: Cheloveck 6.4.2014, 14:07
Цитата(cppGhost @  6.4.2014,  14:35 Найти цитируемый пост)
я открываю окошка браузера, имитирую клик на текстовом поле, имитирую ввод с клавиатуры, имитирую клик на кнопке.

http://watin.org/
http://docs.seleniumhq.org/

Автор: crz 6.4.2014, 18:32
http://www.awesomium.com/

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