С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 16.07.2016
Сообщений: 186

Подскажите в реализации парсера Вконтакте

18.07.2016, 09:55. Показов 5395. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Подскажите, решил сделать парсер информации вконтакте, который будет брать информацию с сайта: http://vk.com/foaf.php?id= //здесь id пользователя
Написал скрипт, который допустим берет имя пользователя из исходного кода страницы:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
 
//откуда будем парсить информацию(полный URL)
 $content = file_get_contents('http://vk.com/foaf.php?id=1');
 
// Определяем позицию строки, до которой нужно все отрезать(кусок кода/текста который размещен перед нужным текстом)
 $pos = strpos($content, '<ya:firstName>');
 
//Отрезаем все, что идет до нужной нам позиции
 $content = substr($content, $pos);
 
// Точно таким же образом находим позицию конечной строки
 $pos = strpos($content, '</ya:firstName>');
 
// Отрезаем нужное количество символов от нулевого
 $content = substr($content, 0, $pos);
 
//если в тексте встречается текст, который нам не нужен, вырезаем его
 $content = str_replace('текст который нужно вырезать','', $content);
 
// выводим спарсенный текст.
 echo $content;
 
 ?>
Все выводится. Теперь я хочу вывести дату регистрации (Результат будет находиться в теге <ya:created dc:date="YYYY-MM-DDTHH:MM:SS+HH:MM"/>)

Пишу вот так(аналогичным образом, как узнавал имя), но ничего не высвечивается. Что я не так делаю?:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
 
//откуда будем парсить информацию(полный URL)
 $content = file_get_contents('http://vk.com/foaf.php?id=1');
 
// Определяем позицию строки, до которой нужно все отрезать(кусок кода/текста который размещен перед нужным текстом)
 $pos = strpos($content, '<ya:created dc:date='); //вот тут ошибка
 
//Отрезаем все, что идет до нужной нам позиции
 $content = substr($content, $pos);
 
// Точно таким же образом находим позицию конечной строки
 $pos = strpos($content, '/>'); //и тут наверное
 
// Отрезаем нужное количество символов от нулевого
 $content = substr($content, 0, $pos);
 
//если в тексте встречается текст, который нам не нужен, вырезаем его
 $content = str_replace('текст который нужно вырезать','', $content);
 
// выводим спарсенный текст.
 echo $content;
 
 ?>
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.07.2016, 09:55
Ответы с готовыми решениями:

Где можно посмотреть пример парсера для вконтакте
Очень хочу сам научится такое писать, но пока-что даже не представляю как это выглядит((

Подскажите , как оптимизировать код парсера
Что прочитать ,чтобы оптимизировать .... это) import requests from bs4 import BeautifulSoup def html(url): page =...

Подскажите автофлудер для вконтакте
Есть группа, в ней есть темы. Мне надо чтобы в одной из тем с определённым интервалом вставлялось сообщение. Существует ли такая прога?

12
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
18.07.2016, 11:09
Для разбора XML-кода есть специальный функционал.
0
1 / 1 / 0
Регистрация: 16.07.2016
Сообщений: 186
18.07.2016, 11:13  [ТС]
Para bellum, а точнее? Какой, и как его применить в моей ситуации
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
18.07.2016, 11:23
А вот: http://php.net/manual/ru/simpl... struct.php
Для загрузки кода с VK лучше использовать http://php.net/manual/ru/funct... d-file.php, чем file_get_contents вкупе с new SimpleXMLElement.
То есть, вот так:
PHP
1
2
3
$xml = simplexml_load_file('http://vk.com/foaf.php?id=1');
 
// Дальше работаете с объектом, содержащимся в $xml
0
1 / 1 / 0
Регистрация: 16.07.2016
Сообщений: 186
18.07.2016, 11:56  [ТС]
Para bellum, у меня уже с первой строки ничего не работает)))))

Warning: simplexml_load_file(http://vk.com/foaf.php?id=1): failed to open stream: Connection timed out in /home/u163705310/public_html/index.php on line 2

Warning: simplexml_load_file(): I/O warning : failed to load external entity "http://vk.com/foaf.php?id=1" in /home/u163705310/public_html/index.php on line 2

А также можете еще подсказать как "xml теги вытаскивать". А то по документации у меня ничего не высвечивается
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
18.07.2016, 12:45
Тогда попробуйте загрузить данные с помощью file_get_contents, а разбирать через simplexml_load_string.
Цитата Сообщение от mininvit Посмотреть сообщение
как "xml теги вытаскивать"
Как из обычного объекта
PHP
1
$xml->title
0
1 / 1 / 0
Регистрация: 16.07.2016
Сообщений: 186
18.07.2016, 13:35  [ТС]
Para bellum,
Цитата Сообщение от Para bellum Посмотреть сообщение
$xml->title
А как тогда быть с двоеточием, там вот так <ya:firstName>,
пишу $xml->ya:firstName; - сервер высвечивает, что : надо экранировать
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.07.2016, 19:43
Цитата Сообщение от mininvit Посмотреть сообщение
А как тогда быть с двоеточием, там вот так <ya:firstName>,
С пространствами имён в XML у SimpleXML напряжёнка какая-то.
PHP
1
$firstName = (string) $xml->xpath('//ya:firstName')[0];
0
1 / 1 / 0
Регистрация: 16.07.2016
Сообщений: 186
19.07.2016, 20:06  [ТС]
Para bellum, ага вижу вывелось. А как быть с такими строками:?
XML
1
<ya:created dc:date="2006-09-23T20:27:12+03:00"/>
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.07.2016, 20:55
Лучший ответ Сообщение было отмечено mininvit как решение

Решение

PHP
1
(string) $xml->xpath('//ya:created/@dc:date')[0]
3
1 / 1 / 0
Регистрация: 16.07.2016
Сообщений: 186
20.07.2016, 13:34  [ТС]
Para bellum, Спасибо большое. А подскажите я из xml запроса получил дату такого формата:
2006-09-23 20:27:12
Её можно конвертировать в date, а потом выводить в разных форматах?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
20.07.2016, 14:09
Да не за что, вроде.
А дату разобрать можно несколькими вариантами.
PHP
1
2
3
4
5
6
# Вариант номер раз
$date = new DateTime('2006-09-23 20:27:12');
$date->format('тут любой формат');
 
# Вариант номер два
$date = date('тут любой формат', strtotime('2006-09-23 20:27:12'));
Форматы тут описаны: http://php.net/manual/ru/function.date.php
1
1 / 1 / 0
Регистрация: 16.07.2016
Сообщений: 186
20.07.2016, 14:21  [ТС]
Огромное спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.07.2016, 14:21
Помогаю со студенческими работами здесь

Подскажите способ реализации
Доброго времени суток, уважаемые форумчане. Исходя из своих немногочисленных навыков в WPF и предыдущего опыта вопрошаю у вас помощи в...

Подскажите в реализации API VK
Помогите написать скрипт получения информации о пользователе вконтакте по id адресу без его разрешения.(т.е без приложений, access...

Подскажите по реализации разметки
Доброго, пытаюсь в андроид студио по перемещать виджеты, но почему то не получается, помогите расставить все по полочкам, необходимо Name...

Подскажите решение по реализации БП.
Т.З: Uвх = 5V Uout 1.8 to 12V Imax=0,1A Желательно получить 2 выхода , т.е. иметь одновременно 2 разных напряжения, желательно...

Подскажите схему реализации
Дано задание: На сервере лежит csv-файл, в который иногда (не менее одного раза в день) вносятся изменения.На сервере приложение,...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru