zheka-zh
31.12.2012, 17:15
Заранее извиняюсь перед Hlebnikov, если моя статья похожа не его)
Что ж, раз уж я взялся за браузерные приложения, то в этой статье я расскажу вам о парсинге. Итак, парсинг - это автоматизированный сбор контента или данных с какого-либо сайта или сервиса. Следовательно, программа или скрипт, собирающий информацию или же данные с какого либо сайта или приложения, называется парсером.
Фазы парсинга
Любой парсер состоит из трех частей, которые отвечают за три отдельных процесса парсинга:
1. Получение контента в исходном виде.
Под получением контента, чаще всего подразумевается скачивание кода веб-страницы, из которой необходимо извлечь данные или контент.
2.Извлечение и преобразование данных.
В этой фазе происходит извлечение требуемых данных из полученного, на первом этапе, кода страницы. Чаще всего для извлечения используют регулярные выражения. Также на этом этапе происходит преобразование извлеченных данных к нужному формату, если это требуется;
3.Генерация результата.
Завершающий этап парсинга. На нем происходит вывод или запись полученных, на втором этапе, данных, в требуемый формат. В нашем случае реализовывать вывод мы будем в label.
Что такое парсинг и с чем его едят мы разобрались.
Давайте попробуем реализовать выше написанное на приложении Тюряга.
Я конечно извиняюсь за некий фейк, так как подобная тема уже написана, но я попытаюсь ясно и кратко разжевать суть дела =)
Почему именно в Тюряге?) Потому что:
1) В Тюряге данные не захешированы.
2) Не нужно тратить много времени, копаясь в исходном коде.
Что ж приступим![/B
[B]Создаем новый проект WindowsForms в VisualStudio:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Далее, кидаем на форму:
2 ТеxtBox'a
1 Button
1 Label (для наглядности, вы можете делать сколько нужно)
Программа должна выглядеть примерно так:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Если же вы читали первый урок, то будет понятнее что и откуда брать, объяснять еще раз я не буду, поэтому переходим сразу к редактору кода и сразу же добавляем два неймспейса (using):
using System.IO;
using System.Net;
Далее пишем код:
namespace WindowsFormsApplication14
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string id = textBox1.Text;
string key = textBox2.Text;
string PostString = this.post("[Ссылки могут видеть только зарегистрированные и активированные пользователи]", "&method=GetInfo&user" + id + "&key=" + key);
this.label2.Text = this.parsing(PostString, "<money>", "</money");
}
private string post(string req, string url)
{
string sl = "&method=GetInfo&user=" + textBox1.Text + "&key=" + textBox2.Text;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] request = ([Ссылки могут видеть только зарегистрированные и активированные пользователи]) WebRequest.Create(req);
request.UserAgent = "Opera/9.80";
request.Method = "POST";
request.ContentType = "application/x-[Ссылки могут видеть только зарегистрированные и активированные пользователи]";
byte[] getBytes = Encoding.ASCII.GetBytes(sl);
request.ContentLength = getBytes.Length;
request.GetRequestStream().Write(getBytes, 0, getBytes.Length);
request.GetRequestStream().Close();
[Ссылки могут видеть только зарегистрированные и активированные пользователи] response = ([Ссылки могут видеть только зарегистрированные и активированные пользователи]) request.GetResponse();
return new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd();
}
string execute;
private string parsing(string txt, string value1, string value2)
{
execute = "";
string[] StringSeparation = new string[] { " \n " };
string[] result = Text.ToString().Split(StringSeparation, StringSplitOptions.RemoveEmptyEntries);
foreach (string str in result)
{
if (str.IndexOf(value1) != -1)
{
string[] info = str.Split((Convert.ToChar(">")));
execute = info[1].Replace(value2, "");
}
}
return execute;
}
}
}
Вот и все, теперь немного теории.
Мы отправляем запрос серверу тюряги, он дает нам ответ в виде исходного кода,
вот тут мы инициализируем ответ в наш label, указывая, что из всех этих каракуль нам
нужны только определенные строки, затем из этих строк вырезаем нужное значение, и окончательный результат инициализируется в label.
Ну, вот в принципе и все) Если есть какие-то ошибки в коде, не стесняемся, говорим.
Помог? = Ставь спасибку!:pandal:
Что ж, раз уж я взялся за браузерные приложения, то в этой статье я расскажу вам о парсинге. Итак, парсинг - это автоматизированный сбор контента или данных с какого-либо сайта или сервиса. Следовательно, программа или скрипт, собирающий информацию или же данные с какого либо сайта или приложения, называется парсером.
Фазы парсинга
Любой парсер состоит из трех частей, которые отвечают за три отдельных процесса парсинга:
1. Получение контента в исходном виде.
Под получением контента, чаще всего подразумевается скачивание кода веб-страницы, из которой необходимо извлечь данные или контент.
2.Извлечение и преобразование данных.
В этой фазе происходит извлечение требуемых данных из полученного, на первом этапе, кода страницы. Чаще всего для извлечения используют регулярные выражения. Также на этом этапе происходит преобразование извлеченных данных к нужному формату, если это требуется;
3.Генерация результата.
Завершающий этап парсинга. На нем происходит вывод или запись полученных, на втором этапе, данных, в требуемый формат. В нашем случае реализовывать вывод мы будем в label.
Что такое парсинг и с чем его едят мы разобрались.
Давайте попробуем реализовать выше написанное на приложении Тюряга.
Я конечно извиняюсь за некий фейк, так как подобная тема уже написана, но я попытаюсь ясно и кратко разжевать суть дела =)
Почему именно в Тюряге?) Потому что:
1) В Тюряге данные не захешированы.
2) Не нужно тратить много времени, копаясь в исходном коде.
Что ж приступим![/B
[B]Создаем новый проект WindowsForms в VisualStudio:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Далее, кидаем на форму:
2 ТеxtBox'a
1 Button
1 Label (для наглядности, вы можете делать сколько нужно)
Программа должна выглядеть примерно так:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Если же вы читали первый урок, то будет понятнее что и откуда брать, объяснять еще раз я не буду, поэтому переходим сразу к редактору кода и сразу же добавляем два неймспейса (using):
using System.IO;
using System.Net;
Далее пишем код:
namespace WindowsFormsApplication14
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string id = textBox1.Text;
string key = textBox2.Text;
string PostString = this.post("[Ссылки могут видеть только зарегистрированные и активированные пользователи]", "&method=GetInfo&user" + id + "&key=" + key);
this.label2.Text = this.parsing(PostString, "<money>", "</money");
}
private string post(string req, string url)
{
string sl = "&method=GetInfo&user=" + textBox1.Text + "&key=" + textBox2.Text;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] request = ([Ссылки могут видеть только зарегистрированные и активированные пользователи]) WebRequest.Create(req);
request.UserAgent = "Opera/9.80";
request.Method = "POST";
request.ContentType = "application/x-[Ссылки могут видеть только зарегистрированные и активированные пользователи]";
byte[] getBytes = Encoding.ASCII.GetBytes(sl);
request.ContentLength = getBytes.Length;
request.GetRequestStream().Write(getBytes, 0, getBytes.Length);
request.GetRequestStream().Close();
[Ссылки могут видеть только зарегистрированные и активированные пользователи] response = ([Ссылки могут видеть только зарегистрированные и активированные пользователи]) request.GetResponse();
return new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd();
}
string execute;
private string parsing(string txt, string value1, string value2)
{
execute = "";
string[] StringSeparation = new string[] { " \n " };
string[] result = Text.ToString().Split(StringSeparation, StringSplitOptions.RemoveEmptyEntries);
foreach (string str in result)
{
if (str.IndexOf(value1) != -1)
{
string[] info = str.Split((Convert.ToChar(">")));
execute = info[1].Replace(value2, "");
}
}
return execute;
}
}
}
Вот и все, теперь немного теории.
Мы отправляем запрос серверу тюряги, он дает нам ответ в виде исходного кода,
вот тут мы инициализируем ответ в наш label, указывая, что из всех этих каракуль нам
нужны только определенные строки, затем из этих строк вырезаем нужное значение, и окончательный результат инициализируется в label.
Ну, вот в принципе и все) Если есть какие-то ошибки в коде, не стесняемся, говорим.
Помог? = Ставь спасибку!:pandal: