Программирование
Веб программирование

Социальный кодинг на примере Вконтакте

 
 

В этой статье я расскажу - как написать простое приложение-парсер для соц. сети Вконтакте.

Парсить будем информацию о нашем профиле


I)Интерфейс:

Нам понадобится:

1) 2 формы

2) TextBox

3) 1 Кнопка

4) WebBrowser

Делаем примерно такие формы:

Форма 1 (главная):


Форма 2 (форма авторизации):



2)Регистрация приложения Вконтакте:


У Контакта есть такая замечательная штука, как API-функции, но для доступа к ним надо регнуть наше приложение в соцсети. Делается это так:

1) Идем по сслыке: http://vk.com/editapp?act=create&site=1 и заполнем форуму добавления приложения (как на скрине):


2) Жмем "Подключить приложение". Выскочит окошко с просьбой подтвереждения:

Жмем "Получить код". На телефон придет СМС-сообщение с кодом.

Вводим его в поле "Код подтвержедния" и жмем "Отправить":

3) Попадаем на страницу управления приложением.

Можете добавить описание, адрес сайта и т.д., но это необязательно. Из всей предоставленной информации нам нужен только номер приложения:

Все. Теперь приступаем к кодингу.

II)Кодинг

1) В модуле формы 2, в процедуре загрузки формы пишем:

WebBrowser1.Navigate("http://api.vkontakte.ru/oauth/authorize?client_id=3416589&scope=friends&redirect_uri=http://api.vkontakte.ru/blank.html&display=page&response_type=token")

Этой командой мы запрашиваем доступ у юзера к соц. сети.

Пояснение параметров:

client_id = 3416589 - ID нашего приложения

scope=friends  - Права доступа (смотри: Права доступа приложений)

redirect_uri - Куда нас переадресует после авторизации (лучше всегда пиать: api.vkontakte.ru/blank.html)

display = page - Стиль страницы. Еще есть: page, popup, touch и wap

response_type=token - Указывает  на то, что после авторизации мы получим специальный ключ.

Он будет нужен для доступа к API.

2) Объявим глобальную переменную для хранения  ключа. Для этого после Public Class Form2 пишем:

Public Token As String

3) В событии браузера DocumentCompleted пишем:

If e.Url.ToString().IndexOf("access_token") <> -1 Then ' Если в коде страницы есть acces_token, то
Token = GetBetween(e.Url.ToString(), "access_token=", "&expires", 0) ' То записываем его в переменную
End If

4) Подключим функцию GetBetween. Она нужна для парсинга значения между двумя тегами:

Public Function GetBetween(ByRef strSource As String, ByRef strStart As String, ByRef strEnd As String, Optional ByRef startPos As Integer = 0) As String 
Dim iPos As Integer, iEnd As Integer, lenStart As Integer = strStart.Length 
Dim strResult As String strResult = String.Empty 
iPos = strSource.IndexOf(strStart, startPos)
iEnd = strSource.IndexOf(strEnd, iPos + lenStart)
If iPos <> -1 AndAlso iEnd <> -1 Then 
strResult = strSource.Substring(iPos + lenStart, iEnd - (iPos + lenStart)) 
End If 
Return strResult
End Function

Теперь напишем код парсинга ифнормации о профиле.

Для этого будем испольльзовать API функцию getProfiles. Она имеет следующий вид:

https://api.vkontakte.ru/method/getProfiles.xml?access_token=TOKEN

Где ТОКЕН - наш ключ (который мы записали в переменную TOKEN)

 1) В модуле Form1, в событии Load вызовем форму авторизации:

Form2.ShowDialog()

 2) В событии Click кнопки "Начать парсинг" пишем:

Dim x As New Xml.XmlDocument Dim XMLBuffer As String x.Load("https://api.vkontakte.ru/method/getProfiles.xml?access_token=" + Form2.Token) ' Отправляем запрос 
XMLBuffer = x.InnerXml ' Считываем XML ответ
 ' Парсим
TextBox1.Text += "Ваш ID:" + Form2.GetBetween(XMLBuffer, "", "") + vbNewLine
TextBox1.Text += "Ваше имя:" + Form2.GetBetween(XMLBuffer, "<first_name>", "") + vbNewLine TextBox1.Text += "Ваша фамилия:" + Form2.GetBetween(XMLBuffer, "<last_name>", "") + vbNewLine

Все. Теперь запускаем нашу программу.

Если вы все сделали правильно, то в текстбоксе будет примерно такой текст:

Скачать файл [257461 кб]


Есть вопросы? Спроси на нашем форуме!!
XeoN100 [09.02.2013 19:14]

Блин. Исходник забыл: rghost. ru/43670768

NoMercy50 [01.12.2013 15:31]

Можете помочь? Нужно чтобы парсер пропускал первый тег и брал второй тег(точно такой же). Т.е.
245881516 22355628 artist name1 title 250 url 9 245252191 22355628 artist name2 title 234 url 16899 18
мне надо чтобы он взял artist name2,и чтобы тэг был . Ну короче может быть кто нибудь меня понял.

Ekibasik [17.10.2014 12:34]

Здравствуйте.Обновите пожалуйста картинки в статье, а то не отображаются.

serega110 [17.10.2014 18:15]

Это с сайтом что-то, а не со статьей.

Stertor370 [17.10.2014 22:40]

Для того, чтобы отправить/принять данные с сайта, есть масса более изящных решений, чем этот Ваш Webbrowser. Не извращайтесь.

Alexander25 [30.12.2015 20:09]

неплохо бы еще пример для переписки через такую прогу, ну или хотябы код. был на сайте ВК, читал про API, но самому не получилось решить проблему. если кто может напишите пожалуйста.



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.