Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/47: Рейтинг темы: голосов - 47, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 12.07.2012
Сообщений: 3
1

Парсинг сообщений вконтакте

12.07.2012, 14:23. Показов 8608. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем! Задался целью написать парсер для сообщений вконтакте, опытом программирования к сожалению владею минимальным, поэтому затруднения вызывает то что код страницы и соответственно сообщения отображаются в ограниченной форме и по ходу скроллинга, инициализации элемента "Показать еще" (show_more). Подскажите, пожалуйста, пути решения. Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.07.2012, 14:23
Ответы с готовыми решениями:

Автоотправка сообщений вконтакте в беседу, скрипт
Мне нужен скрипт, который позволит мне отправлять много сообщений(число которое я укажу) в беседе в...

Парсинг Вконтакте.Аудио
Если спарсить размещение трека, то получиться что-то вроди этого:...

Парсинг сайт Вконтакте
Которую неделю пытаюсь спарсить вконтакте, в итоге либо парсер не видит именно вк (хотя с...

Отправка сообщений вконтакте
Подскажите может есть где исходник программы чтобы по сути на форме была одна кнопка,нажав на...

5
Комбинатор
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
12.07.2012, 15:51 2
Ну посмотрите какие запросы отправляются асинхронно, при скроллинге...
И используйте...

Добавлено через 38 секунд
Либо изайте API-шку...
0
0 / 0 / 0
Регистрация: 12.07.2012
Сообщений: 3
12.07.2012, 17:41  [ТС] 3
Спасибо) Но vk api не подходит, выдирать сообщения собираюсь с id, к которому не смогу получить для приложения права. Что же касается элемента инициализации скроллинга, то когда я ее выполняю в браузере (работаю в адресной строке), то поле отображения сообщений сдвигается, но мгновенно возвращается на то же место. Скорее всего работать надо не в браузере (но тогда не могли бы подсказать где?) или я упускаю что-то другое.
0
Комбинатор
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
12.07.2012, 18:14 4
Цитата Сообщение от Chant Посмотреть сообщение
не могли бы подсказать где?
В скрипте.
Ответ от их сервера должен быть в виде html/text.
Проанализируйте запросы, которые отправляются серверу при скроллинге. И отправляйте такие же в своих скриптах и просто печатайте их.

Когда-то делал подобное, не знаю пропустят сейчас такое или нет...
1
0 / 0 / 0
Регистрация: 12.07.2012
Сообщений: 3
13.07.2012, 13:14  [ТС] 5
Спасибо! Код элемента "Показать еще":

PHP
1
2
3
<div id="im_rows-2" class="im_rows im_peer_rows" style="display: none">
    <a href="#" id="im_more-2" class="im_more" onclick="return IM.showsMoreSearch()" style="display: none;">
         <div>Показать предыдущие сообщения</div>
Но каким образом отправить запрос на выполнение, подскажите пожалуйста.
Спасибо.
0
1 / 1 / 0
Регистрация: 20.07.2014
Сообщений: 7
20.07.2014, 20:57 6
Здравствуйте, не хотел создавать отдельной темы, тем более, что могу и вам помочь немного..... Вообщем я задался такой проблемой....сохранить в обычный txt файл все сообщения с определённым пользователем..... вообщем поискал код, инфу..... дописал свой..и ура да получилось, код ниже, но проблема..... парсит только первые пару страниц..... а дальше видимо блокируется капчей либо чем-то ещё.... пробывал ставить и паузу порядка 20 секунд между загрузками страниц, но результат тот же..... то есть сохраняет только первые 2-3 страницы, а дальше тупо их и сохраняет и забивает текстовый файл теми же сообщениями..... для парсинга я выбрал мобильную версию контакта, так, как там можно легче получить все сообщения по страницам, не надо долго с POST запросами играться.....
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<html>
<head>
<title>Парсер вк</title>
</head>
<body>
<?php
 
 
function get_web_page( $url )
{
  $uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14";
 
  $ch = curl_init( $url );
 
 
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   // возвращает веб-страницу
  curl_setopt($ch, CURLOPT_HEADER, 0);           // не возвращает заголовки
 
 curl_setopt($ch, CURLOPT_COOKIE, "remixsid=указываем свои куки (можно в браузере посмотреть)");
/*
в хроме так
ctr+shift+j ------ resourses-----coockies----m.vk.com
*/
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);   // переходит по редиректам
  curl_setopt($ch, CURLOPT_ENCODING, "");        // обрабатывает все кодировки
  curl_setopt($ch, CURLOPT_USERAGENT, $uagent);  // useragent
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // таймаут соединения
  curl_setopt($ch, CURLOPT_TIMEOUT, 120);        // таймаут ответа
  curl_setopt($ch, CURLOPT_MAXREDIRS, 10);       // останавливаться после 10-ого редиректа
 
  $content = curl_exec( $ch );
  $err     = curl_errno( $ch );
  $errmsg  = curl_error( $ch );
  $header  = curl_getinfo( $ch );
  curl_close( $ch );
 
  $header['errno']   = $err;
  $header['errmsg']  = $errmsg;
  $header['content'] = $content;
  return $header;
}
$page=0;
go($page);
 
function go($page){
sleep(10);
$urle="http://m.vk.com/mail?act=show&peer=айди пользователя(цифрами) &offset=".(string)$page;
$result = get_web_page($urle);
if (($result['errno'] != 0 )||($result['http_code'] != 200))
    {
    echo $result['errmsg'];
    }
else
    {
 
    
    $fh=fopen("file_dialog.txt","a");
    $page = $result['content'];
    
    
    preg_match_all("/class=\"mi_text\">(.*?)<\/div>/",$page,$ok);
 
    preg_match_all("/id=[0-9]{4,}\">(.*?)<\/a>/",$page,$ok_3);
    $n="\r\n";
    for ($j=0; $j<count($ok[1]); $j++) {
        fwrite($fh,$ok[1][$j]);
        fwrite($fh,$n);
        fwrite($fh,$ok_3[1][$j]);
 
        fwrite($fh,$n);
    }   
    
    
    
 
 
    fclose($fh);
    (int)$page=(int)$page+20;
    
    go($page);
    
    
    }
 
}
идея следующая.... вначале берётся первая страница (offset=0) с неё парсится инфа в виде: тело сообщения+дата отправки...... потом к переменной page плюсуется 20 (именно столько добавляется к offset-у при переходе на следующую страницу) потом все опять дозаписывается в файл и повторяется рекурсивно до тех пор, пока страница открывается, следовательно, если мы превысим оффсет, то скрипт остановится.....

всё работает, как описано выше, а по чему не работает так, как хотелось бы, я не понимаю...уже кучу времени убил на всякие махинации с кодом, но не могу до конца доделать скрипт....если кто поможет доделать - буду весьма признателен......надеюсь хоть кому-то помог и прошу того же взамен.. В коде ОБЪЯЗАТЕЛЬНО замените куки и айди на свои данные!!!
0
20.07.2014, 20:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.07.2014, 20:57
Помогаю со студенческими работами здесь

Отправление сообщений Вконтакте
Сделал такую небольшую программку, которая отправляет сообщение на почту с текстом, что написано в...

Просмотр сообщений ВКонтакте . .
Можно ли просмотреть новые сообщения так, чтобы синий фон с них не пропадал? Может, прочитать...

Рассылка сообщений в группе вконтакте
Добрый день. реально ли сделать программу ( в онлайн платформах) без знания языка,чтобы участники...

Авторизация и отправка сообщений Вконтакте
Пишу приложение, для отправки сообщений в соц. сети Вконтакте, авторизация проходит успешно, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru