Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2010, 13:57   #1
iHikita
Пользователь
 
Регистрация: 14.03.2010
Сообщений: 38
По умолчанию Как "выдрать" нужный текст из html странички[C#]

Здравствуйте, подскажите пожалуйста по следующему вопросу:
Нужна выыдрать из html странички некий текст, пример:
1) Дано:
Код:
<a href="white.php?p=336&pn=Desktop+Background+-+Play&b=2&bn=Electronics" class="productFrame pfs instock"><span class="productTitle"><span class="pti">Apple</span></span><span class="productImage" style="background-image:url(http://site.com/sites/default/files/products/E01-10-P000-00561-NNN99/landing_E01-10-P000-00561-NNN99_01.jpg);"></span><span class="productInfo"><span class="pii">iMac 21.5 inch Computer</span><span class="piptz">1400</span></span></a>
<a href="white.php?p=336&pn=Desktop+Background+-+Play&b=2&bn=Electronics" class="productFrame pfs instock"><span class="productTitle"><span class="pti">Apple</span></span><span class="productImage" style="background-image:url(http://site.com/sites/default/files/products/E01-09-P000-00195-00000/landing_E01-09-P000-00195-00000_01.jpg);"></span><span class="productInfo"><span class="pii">MacBook Air 13 inch - Aluminum</span><span class="piptz">100</span></span></a>
<a href="white.php?p=336&pn=Desktop+Background+-+Play&b=2&bn=Electronics" class="productFrame pfs instock"><span class="productTitle"><span class="pti">Apple</span></span><span class="productImage" style="background-image:url(http://site.com/sites/default/files/products/E01-10-P000-00465-NNN99/landing_E01-10-P000-00465-NNN99_01.jpg);"></span><span class="productInfo"><span class="pii">MacBook Pro 13 inch - Aluminum</span><span class="piptz">600</span></span></a>
<a href="white.php?p=336&pn=Desktop+Background+-+Play&b=2&bn=Electronics" class="productFrame pfs instock"><span class="productTitle"><span class="pti">Apple</span></span><span class="productImage" style="background-image:url(http://site.com/sites/default/files/products/E01-10-P000-00369-WHT01/landing_E01-10-P000-00369-WHT01_01.jpg);"></span><span class="productInfo"><span class="pii">MacBook 13 inch</span><span class="piptz">400</span></span></a>
Нужно как-нибудь записать в переменную типа string вот эти данные:
Код:
white.php?p=336&pn=Desktop+Background+-+Play&b=2&bn=Electronics
При том, что неизвестно как будет выглядеть эта ссылка.

Последний раз редактировалось iHikita; 08.07.2010 в 14:18.
iHikita вне форума Ответить с цитированием
Старый 08.07.2010, 14:15   #2
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Здесь посмотри, мощное средство для работы с текстами
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 08.07.2010, 19:22   #3
xil
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 98
По умолчанию

запихиваешь весь хтмл код в строковую переменную, затем находишь <a href=" и удаляешь все по знак ", удалил и вырезаешь строку от 0 символа до первого символа ". Повторяешь эти действия пока есть ссылки =)
Должно работать
Как вы сформулируете вопрос так вам и ответят
xil вне форума Ответить с цитированием
Старый 08.07.2010, 19:45   #4
iHikita
Пользователь
 
Регистрация: 14.03.2010
Сообщений: 38
По умолчанию

Спасибо огромное. Вроде разобрался с этим, но теперь возник вопрос с авторизацией на сайте, путём отправки POST запроса. Нужно провести авторизацию на сайте Lockerz.com
ПРи авторизации передаются следующие данные:
Код:
POST /auth/login HTTP/1.1
Host: www.lockerz.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Referer: http://www.lockerz.com/
Cookie: __utma=27550625.921720817.1277991532.1278602858.1278603502.10; __utmz=27550625.1277991532.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=27550625.4.10.1278603502; PHPSESSID=0a94f69341c8b09aa582d4564c66bb94; __utmc=27550625; lockerz2=x3jr8YjTHkA5wzgY1umlZ0eReL57EgAqsm%2F3NAAGQdfdmsAswuiiT7L6ZOnaNWroPGyljL4MwCy4i5BO%2F2AauLvioMKTUyLWM2ptI0wbqf1gcJVmI0mJIVBnx7%2Bw1MvzgJY6PhWrnVwuXsYVo%2FExvufNd6hGCgDDlcVyqu7R%2BvScxTvTqaCT2Sx4Fp38ERtVb01u%2FgiXzcJxSXQdqT1b7A%3D%3D
Content-Type: application/x-www-form-urlencoded
Content-Length: 54

handle=usermail%40mail.ru&password=123456
Пробовал делать вот так:
Код:
private string Post(string url, string parameters)
        {
            //создаем экземпляр класа WebRequest
            WebRequest webRequest = WebRequest.Create(url);

            //задаем используемый алгоритм передачи данных
            webRequest.ContentType = "application/x-www-form-urlencoded";
            webRequest.Method = "POST";

            //узнаем количество передаваемых байт
            byte[] bytes = Encoding.ASCII.GetBytes(parameters);
            Stream os = null;

            //количество передаваемых байт
            webRequest.ContentLength = bytes.Length;
            os = webRequest.GetRequestStream();

            //ну и собственно делаем запрос
            os.Write(bytes, 0, bytes.Length);
            // получаем ответ.
            WebResponse webResponse = webRequest.GetResponse();
            StreamReader sr = new StreamReader(webResponse.GetResponseStream());
            return sr.ReadToEnd().Trim();
        }

        private void auth()
        {
            string url = "http://www.lockerz.com/auth/login";
            string parameters = "?handle=mail@domen.ru&password=123456";
            label1.Text=Post(url, parameters);

        }
В этом случае, возврашяются вот такая строка: Disallowed Key Characters.

Код взял с интернета, подставил свои данные и убрал обработку ошибок временно.
Натолкните пожалуйста на путь истинный
iHikita вне форума Ответить с цитированием
Старый 11.07.2010, 00:29   #5
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

емнип, в запросе не нужно писать знак вопроса
Namolem вне форума Ответить с цитированием
Старый 12.07.2010, 19:32   #6
LT.
The IT Crowd
Пользователь
 
Аватар для LT.
 
Регистрация: 10.10.2008
Сообщений: 41
По умолчанию

Код:
public Form1()
        {
            InitializeComponent();
        }

        string thURI = "http://www.lockerz.com/auth/login";
        string username = "свой логин";
        string password = "свой пароль";

private void button1_Click(object sender, EventArgs e)
        {
            StringBuilder msg = new StringBuilder(String.Empty);
            Uri st = new Uri("http://www.lockerz.com");
            string reqString = String.Format("username={0}&password={1}", username, password);
            byte[] requestData = Encoding.UTF8.GetBytes(reqString);
            CookieContainer cc = new CookieContainer();
            var request = (HttpWebRequest)WebRequest.Create(thURI);
            request.Proxy = null;
            request.CookieContainer = cc;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            using (System.IO.Stream s = request.GetRequestStream())
                s.Write(requestData, 0, requestData.Length);
            using (var response = (HttpWebResponse)request.GetResponse())
            {
                foreach (var str in cc.GetCookies(st))
                {
                    msg.Append(str);
                }
                textBox1.AppendText(msg.ToString());
                //MessageBox.Show(msg.ToString()); // Proverka
            }
}
На форме должна быть кнопка, и textBox1 с MultiLine(сделать это можно, когда добавляешь textBox на форму, в правом верхнем углу элемента увидишь небольшой черный треугольничек, вот так и ставишь галочку), растягиваешь textBox на нужный тебе размер и все.
Далее.. по коду. Приведенный мною код реализует авторизацию, и возвращает куки(для проверки прошел ли ты авторизацию) в textBox1.

Все должно работать. Если буду вопросы - пиши.
"Одни наслаждаются дождём, другие просто промокают." - Роджер Миллер
LT. вне форума Ответить с цитированием
Старый 13.07.2010, 18:20   #7
iHikita
Пользователь
 
Регистрация: 14.03.2010
Сообщений: 38
По умолчанию

LT.,
Огромное спасибо, всё получилось. Разобрался
iHikita вне форума Ответить с цитированием
Старый 14.07.2010, 12:50   #8
LT.
The IT Crowd
Пользователь
 
Аватар для LT.
 
Регистрация: 10.10.2008
Сообщений: 41
По умолчанию

Цитата:
Сообщение от iHikita Посмотреть сообщение
LT.,
Огромное спасибо, всё получилось. Разобрался
Не за что. Рад, что помог.
"Одни наслаждаются дождём, другие просто промокают." - Роджер Миллер
LT. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
"Выдрать" конкретную часть сайта на C# LT. Общие вопросы .NET 13 13.06.2010 17:29
Напечатать текст, удалив из него все цифры и знаки "+" или "–". Язык С++. KaylasMKTY Помощь студентам 8 07.03.2010 21:35
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03
Текст html-странички в поле Memo Delpinist Win Api 5 18.12.2006 14:57