Вернуться   D3Scene.Ru Софт портал игр | Хаки | Проги | Статьи > Другое > Информационные технологии > Программирование > С++/C#
Присоединяйся к нам



Ответ
 
Опции темы Опции просмотра
Старый 26.09.2010, 20:34   #1
Lost


 
Аватар для N.e.o.
 
Регистрация: 20.08.2009
Адрес: Matrix
Сообщений: 1,028
Репутация: 802
Автор Сообщение

[C# урок] Пишем парсер


Здесь покажу вам как очень просто можно создать парсер на C#.
Создаем Console Application.
Появилось что то такое:
Цитата:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
}
}
}
Дальше подключаем using System.Net и System.IO;
Net - для того чтобы отправить запрос, получить ответ, IO чтобы записать его в файл.

Создаем запрос (здесть на google.com) :

Цитата:
WebRequest webReq = WebRequest.Create("http://google.com");
Запрос создали, супер, теперь респонс:
Цитата:
WebResponse webRes = webReq.GetResponse();
Теперь надо узнать что ж было в ответе:
Цитата:
Stream st = webRes.GetResponseStream();
StreamReader sr = new StreamReader(st);
StreamWriter sw = new StreamWriter("data.txt");
string response = sr.ReadToEnd();
sw.WriteLine(response);
sr.Close();
sw.Close();
Вот собственно и все. Код нашей странички находится в data.txt .

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            WebRequest webReq = WebRequest.Create("http://google.com");
            WebResponse webRes = webReq.GetResponse();
            Stream st = webRes.GetResponseStream();
            StreamReader sr = new StreamReader(st);
            StreamWriter sw = new StreamWriter("data.txt");
            string response = sr.ReadToEnd();
            sw.WriteLine(response);
            sr.Close();
            sw.Close();
        }
    }
}
N.e.o. for D3scene.ru
__________________

[Ссылки скрыты от гостей.]
[Ссылки скрыты от гостей.]
По женским представлениям, под покровом темноты мужчины могут думать только о сексе. Это неправда. Днем они тоже о нем думают.*face2*
  Ответить с цитированием Наверх
3 пользователя(ей) сказали cпасибо:
ParniSha (26.09.2010), San-benito (27.09.2010), Solomir (26.09.2010)
Старый 27.09.2010, 00:36   #2
Именно тут нужен jQuery



 
Аватар для DeRZoST2
 
Регистрация: 09.12.2008
Адрес: Москва
Сообщений: 1,181
Репутация: 901
Отправить сообщение для DeRZoST2 с помощью ICQ Отправить сообщение для DeRZoST2 с помощью Skype™
По умолчанию

даже не похоже на тебя, ты обычо всё очень детально расписываешь,
сейчас ты даже не написал для чего парсер, ну я понял что это просто Get запрос,
другие то не поймут, мб ты и хочешь стать лучшим автором,
но давай уж не забывай про то что тут не все всё понимаю,
большая часть даже не понимает что такое прокси или дедик
__________________
[Ссылки скрыты от гостей.][Ссылки скрыты от гостей.]
  Ответить с цитированием Наверх
Старый 27.09.2010, 01:33   #3
Рядовой
 
Аватар для not4me
 
Регистрация: 23.09.2010
Сообщений: 25
Репутация: 5
По умолчанию

ну так рассписал конечно
подключил библиотечку нет ио
послал запрос на гугл получил ответ
создал класс последовательности
дальше присвоение переменных на последовательность байтов и запись в блокнотик:)
ну относительно придельно просто, если шаришь в шарпе.
И еще думаю в виндовс апликейшен лучше было бы написать с некоторыми доп-ми функциями
  Ответить с цитированием Наверх
Старый 27.09.2010, 01:45   #4
Lost


 
Аватар для N.e.o.
 
Регистрация: 20.08.2009
Адрес: Matrix
Сообщений: 1,028
Репутация: 802
Автор По умолчанию

Цитата:
Сообщение от DeRZoST2 Посмотреть сообщение
даже не похоже на тебя, ты обычо всё очень детально расписываешь,
сейчас ты даже не написал для чего парсер, ну я понял что это просто Get запрос,
другие то не поймут, мб ты и хочешь стать лучшим автором,
но давай уж не забывай про то что тут не все всё понимаю,
большая часть даже не понимает что такое прокси или дедик
Может и не расписал, он не от того что лень, а вроде если перевести с англ на рус. то все читается понятно, но может и нет...


Цитата:
Сообщение от DeRZoST2 Посмотреть сообщение
сейчас ты даже не написал для чего парсер, ну я понял что это просто Get запрос,
чтоби пропарсить страничку и надо отправить get запрос. пример привел на гугл. например если ранше хотели парсить ггц аки то отправляли точно такой же get запрос на странички и доставали не весь поток, а только нужную нам строку. но здесь я описал не как доставать именно какуюто одну строку на 1 сайте, а как достать все (из него потом можно вибрать то что надо) откуда угодно.

Обясняю каждую строку кода:

Цитата:
Сообщение от N.e.o. Посмотреть сообщение
WebRequest webReq = WebRequest.Create("http://google.com");
WebRequest - веб реквест (запрос); webReq им'я запроса; WebRequest.Create метод чтоби создать запрос на нужную нам страницу; "http://google.com" страница.

Цитата:
Сообщение от N.e.o. Посмотреть сообщение
WebResponse webRes = webReq.GetResponse();
WebResponse - веб респонс (ответ); webRes им'я ответа; webReq.GetResponse(); присваиваем что webRes должен получить (и получает) ответ именно от заданого ранше webReq.


Цитата:
Сообщение от N.e.o. Посмотреть сообщение
Stream st = webRes.GetResponseStream();
Stream - поток, нуден для того чтоби получить "инфу"; st - им'я потока; webRes.GetResponseStream() - присваиваем нашему потоку "поток ответ" от webRes;


Цитата:
Сообщение от N.e.o. Посмотреть сообщение
StreamReader sr = new StreamReader(st);
StreamReader - нужен для того чтоби прочесть наш ранше созданий поток st; sr - им'я ридера; new StreamReader(st) говорим что должен читать именно st.


Цитата:
Сообщение от N.e.o. Посмотреть сообщение
StreamWriter sw = new StreamWriter("data.txt");
StreamWriter - нужен для того чтоби записать ранше прочитаний поток; sw - им'я врайтера; new StreamWriter("data.txt") - говорим куда именно должен записать (адреса к файлу)
если пишет просто "data.txt" значит файл будет в папке где размещена exe-шка


Цитата:
Сообщение от N.e.o. Посмотреть сообщение
string response = sr.ReadToEnd();
string response - создаем переменную типа "строка и присваиваем ей все что прочитал наш sr из stream (ReadToEnd() - читать до конца).

если не надо все а допустим только после 100ой строки то пишем чтото типа етого:
Цитата:
int i =0;
while(!sr.EndOfStream)//пока не закончится поток
{
string response = sr.ReadLine(); //читаем по одной строке
if (i >= 99)//проверяем больше ли строка за 100 индекс
{
sw.WriteLine(response);//записиваем
}
i++;
}

Цитата:
Сообщение от N.e.o. Посмотреть сообщение
sw.WriteLine(response);
записиваем ранше созданий response в "data.txt"

Цитата:
Сообщение от N.e.o. Посмотреть сообщение
sr.Close();
закриваем "читатель" потока
Цитата:
Сообщение от N.e.o. Посмотреть сообщение
sw.Close();
закриваем "писатель" потока

Стараюсь для вас , а конкурси били, есть, будут, и закончатся и новие будут...
Как еще подробнее обяснить не знаю...

Добавлено через 2 минуты
Цитата:
Сообщение от not4me Посмотреть сообщение
И еще думаю в виндовс апликейшен лучше было бы написать с некоторыми доп-ми функциями
создать Windows Form Application, перетаскиваеш кнопку, кликаеш 2 раза и вставляеш код:
Цитата:
WebRequest webReq = WebRequest.Create("http://google.com");
WebResponse webRes = webReq.GetResponse();
Stream st = webRes.GetResponseStream();
StreamReader sr = new StreamReader(st);
StreamWriter sw = new StreamWriter("data.txt");
string response = sr.ReadToEnd();
sw.WriteLine(response);
sr.Close();
sw.Close();
и вверху подключаеш еще :

Цитата:
Сообщение от N.e.o. Посмотреть сообщение
using System.Net;
using System.IO;
Добавлено через 4 минуты
p.s. сори за орфографичиские ошибки)
__________________

[Ссылки скрыты от гостей.]
[Ссылки скрыты от гостей.]
По женским представлениям, под покровом темноты мужчины могут думать только о сексе. Это неправда. Днем они тоже о нем думают.*face2*

Последний раз редактировалось N.e.o.; 27.09.2010 в 01:50. Причина: Добавлено сообщение
  Ответить с цитированием Наверх
4 пользователя(ей) сказали cпасибо:
DeRZoST2 (27.09.2010), ParniSha (27.09.2010), San-benito (27.09.2010), Seo (27.09.2010)
Старый 27.09.2010, 12:42   #5
Бан
 
Аватар для Bishop
 
Регистрация: 05.09.2008
Сообщений: 659
Репутация: 587
Отправить сообщение для Bishop с помощью ICQ Отправить сообщение для Bishop с помощью Skype™
По умолчанию

А я всеровно не знаю, что такое парсер !
  Ответить с цитированием Наверх
Старый 27.09.2010, 12:55   #6
Бан

 
Аватар для San-benito
 
Регистрация: 05.07.2010
Адрес: На Марсе
Сообщений: 399
Репутация: 104
Отправить сообщение для San-benito с помощью ICQ
По умолчанию

Цитата:
Сообщение от Bishop Посмотреть сообщение
А я всеровно не знаю, что такое парсер !
Parser — это технология создания сайтов с помощью простого языка,сложнее чем html.
  Ответить с цитированием Наверх
Старый 27.09.2010, 13:15   #7
Именно тут нужен jQuery



 
Аватар для DeRZoST2
 
Регистрация: 09.12.2008
Адрес: Москва
Сообщений: 1,181
Репутация: 901
Отправить сообщение для DeRZoST2 с помощью ICQ Отправить сообщение для DeRZoST2 с помощью Skype™
По умолчанию

Цитата:
Сообщение от San-benito Посмотреть сообщение
Parser — это технология создания сайтов с помощью простого языка,сложнее чем html.
бишоп не читай этот бред)
даже не знаю где это он мог скопипастить)
__________________
[Ссылки скрыты от гостей.][Ссылки скрыты от гостей.]
  Ответить с цитированием Наверх
Старый 27.09.2010, 13:41   #8
Бан

 
Аватар для San-benito
 
Регистрация: 05.07.2010
Адрес: На Марсе
Сообщений: 399
Репутация: 104
Отправить сообщение для San-benito с помощью ICQ
По умолчанию

Цитата:
Сообщение от DeRZoST2 Посмотреть сообщение
даже не знаю где это он мог скопипастить)
если бы йа сам знал)Бишоп не слушай его..йа правду говорю)
  Ответить с цитированием Наверх
Старый 27.09.2010, 15:26   #9
Освоившийся

 
Аватар для DeaTHSeeKeR
 
Регистрация: 27.05.2009
Сообщений: 338
Репутация: 365
Отправить сообщение для DeaTHSeeKeR с помощью ICQ Отправить сообщение для DeaTHSeeKeR с помощью Skype™
По умолчанию

В информатике, синтакси́ческий ана́лиз (па́рсинг) — это процесс сопоставления линейной последовательности лексем (слов, токенов) языка с его формальной грамматикой. Результатом обычно является дерево разбора (синтаксическое дерево). Обычно применяется совместно с лексическим анализом. Синтаксический анализатор (парсер) — это программа или часть программы, выполняющая синтаксический анализ.
__________________
//Zhyk: изображении подписи удалено, т.к превышает новые лимиты по размерам.
  Ответить с цитированием Наверх
Пользователь сказал cпасибо:
DeRZoST2 (28.09.2010)
Старый 27.09.2010, 18:11   #10
Lost


 
Аватар для N.e.o.
 
Регистрация: 20.08.2009
Адрес: Matrix
Сообщений: 1,028
Репутация: 802
Автор По умолчанию

, да что ви впариваете что такое парсер,он ето и так прекрасно знает)

Цитата:
Сообщение от San-benito Посмотреть сообщение
Parser — это технология создания сайтов с помощью простого языка,сложнее чем html.
спс поржал
__________________

[Ссылки скрыты от гостей.]
[Ссылки скрыты от гостей.]
По женским представлениям, под покровом темноты мужчины могут думать только о сексе. Это неправда. Днем они тоже о нем думают.*face2*
  Ответить с цитированием Наверх
Старый 10.06.2011, 00:38   #11
Группа разработчиков


 
Аватар для zinador
 
Регистрация: 15.11.2010
Адрес: Новосибирск
Сообщений: 81
Репутация: 27
По умолчанию

Цитата:
Сообщение от DeRZoST2 Посмотреть сообщение
бишоп не читай этот бред)
даже не знаю где это он мог скопипастить)
мб в сфере создания сайта на штмле это и так,но омг что за фигня)
__________________
  Ответить с цитированием Наверх
Старый 10.06.2011, 09:28   #12
Старожил


 
Аватар для gg.Groove
 
Регистрация: 21.08.2010
Адрес: Almaty
Сообщений: 1,054
Репутация: 212
По умолчанию

Цитата:
Сообщение от N.e.o. Посмотреть сообщение
StreamReader sr = new StreamReader(st);
Что тут делает SR и ST
Я уже на VB.net пишу давно, правда там все в фреймворке ограничивается, думаю на C# перейти.
Напиши про WM_SETTEXT и нажимание кнопок, например в гарене.
__________________

[Ссылки скрыты от гостей.]

Последний раз редактировалось gg.Groove; 10.06.2011 в 09:42.
  Ответить с цитированием Наверх
Старый 10.06.2011, 10:06   #13
Группа разработчиков


 
Аватар для zinador
 
Регистрация: 15.11.2010
Адрес: Новосибирск
Сообщений: 81
Репутация: 27
По умолчанию

Цитата:
Сообщение от gg.Groove Посмотреть сообщение
Что тут делает SR и ST
Я уже на VB.net пишу давно, правда там все в фреймворке ограничивается, думаю на C# перейти.
Напиши про WM_SETTEXT и нажимание кнопок, например в гарене.
если хочешь понять апи функции лучше на с++ переходи,хотя с бейсика на С++ тяжеловата,но если поднатянуться то можно. в С# просто апи функций нету,там для каждой апи функции нужно прописывать ее,после подключения библиотеки,имхо ВинАпи это к С++

Добавлено через 10 минут
изменить кодировку надо,я имел ввиду) а функцию мог бы в гугле найти
[Ссылки скрыты от гостей.]

Добавлено через 17 минут
черт последний пост нетуда написапл)
__________________

Последний раз редактировалось zinador; 10.06.2011 в 10:24. Причина: Добавлено сообщение
  Ответить с цитированием Наверх
Старый 10.06.2011, 12:03   #14
Lost


 
Аватар для N.e.o.
 
Регистрация: 20.08.2009
Адрес: Matrix
Сообщений: 1,028
Репутация: 802
Автор По умолчанию

Цитата:
Сообщение от gg.Groove Посмотреть сообщение
Что тут делает SR и ST
Я уже на VB.net пишу давно, правда там все в фреймворке ограничивается, думаю на C# перейти.
Напиши про WM_SETTEXT и нажимание кнопок, например в гарене.
посмотри внемательно и поймеш что SR ето StreamReader которий читает поток из Stream-а...
Цитата:
Сообщение от gg.Groove Посмотреть сообщение
Напиши про WM_SETTEXT и нажимание кнопок, например в гарене.
На### в c# писать про возможности WinAPI? WM_SETTEXT вау, вместо надписи Garena можно вклепать Garena-gavno, или инвокнуть кнопку какуюто...
+ я уверен что про WinAPI из уроков народ ничего не поймет... или почти ничего

Добавлено через 56 секунд
Цитата:
Сообщение от gg.Groove Посмотреть сообщение
zinador, на MSDN видел использование WinApi на C#, Но там не было примеров кода, которые мне так нужны.
dll import
__________________

[Ссылки скрыты от гостей.]
[Ссылки скрыты от гостей.]
По женским представлениям, под покровом темноты мужчины могут думать только о сексе. Это неправда. Днем они тоже о нем думают.*face2*

Последний раз редактировалось N.e.o.; 10.06.2011 в 12:04. Причина: Добавлено сообщение
  Ответить с цитированием Наверх
Старый 10.06.2011, 14:31   #15
Группа разработчиков


 
Аватар для zinador
 
Регистрация: 15.11.2010
Адрес: Новосибирск
Сообщений: 81
Репутация: 27
По умолчанию

Цитата:
Сообщение от N.e.o. Посмотреть сообщение
dll import
+100,
когда подключиш ддлку ,нужно апи функцию описать,тоесть что принимает итд.это можеш на мсдне найти
__________________
  Ответить с цитированием Наверх
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

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

Быстрый переход


Powered by vBulletin
Copyright © 2017 vBulletin Solutions, Inc.
Перевод: zCarot | Дизайн: G-A | Верстка: OldEr
Текущее время: 23:06. Часовой пояс GMT +4.