Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/76: Рейтинг темы: голосов - 76, средняя оценка - 4.74
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16

Анализ информации из социальных сетей

21.07.2018, 11:33. Показов 16831. Ответов 187
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно собирать и анализировать информацию из социальных сетей

на python делать?
с чего нужно начинать?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.07.2018, 11:33
Ответы с готовыми решениями:

Как сделать телеграм бота пересылающий посты и новости из RSS лент и социальных сетей (агрегатор)
Я пытался как всегда разбить план на мелкие составляющие, я начал думать что конкретно и как бот должен будет уметь делать, но даже во...

Блокировка социальных сетей
Возможно подобная тема уже есть, но как-то не нашел.... И всё же дело вот в чем, блокировать соцсети это понятно как, антивирус там,...

Кнопки социальных сетей
Скачал бесплатный шаблон в Вордпресс,в демо версии установлены кнопки социальных сетей в шапке сайта(фото№1).В админпанели есть социальные...

187
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
25.09.2018, 01:12  [ТС]
Студворк — интернет-сервис помощи студентам
и сразу возникает масса вопросов...

Что за формат такой?
'date': 1498774651,

Кроме того, мы имеем:

'post_source'
'post_type'
'text'
'likes'
'comments'
'reposts'
'marked_as_ads'
'attachments' https://vk.com/page-1_41248202
'type': 'photo'
'type': 'posted_photo'
'type': 'video'
'type': 'audio'
'type': 'doc'
'type': 'graffiti'
'type': 'link'
'type': 'note'
'type': 'app'
'type': 'poll'
'type': 'page'

Добавлено через 1 минуту
Garry Galler, да, по сути, общими усилиями здесь создаю анализатор постов, который должен показывать определенную информацию (мониторить)

Добавлено через 1 минуту
и параллельно, учусь
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
25.09.2018, 03:18
Время указано в виде unix timestamp, конвертировать можно так

Python
1
2
3
import datetime
 
print(datetime.datetime.utcfromtimestamp(1498774661).strftime('%Y-%m-%dT%H:%M:%SZ'))
1
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
25.09.2018, 09:23  [ТС]
Вот, нашел! https://vk.com/dev/objects/post

Список объектов › Запись на стене - объект, описывающий запись на стене пользователя или сообщества, содержит следующие поля:

Добавлено через 1 час 12 минут
когда читаешь доки https://vk.com/dev/objects/post и сравниваешь код, натыкаешься на "совпадения"...
например

views object # информация о просмотрах записи. Объект с единственным полем: count (integer) — число просмотров записи.

Вопрос в следующем:

в файле sqlite_core

Python
1
2
3
4
5
6
7
8
9
        self.c.execute(
                '''
                CREATE TABLE IF NOT EXISTS vkdata( 
                    id[B] integer[/B],
                    data [B]integer[/B],
                    txt[B] text,[/B]
                    CONSTRAINT name_unique UNIQUE (id))
                '''
            )
можно (теоретически) сделать так:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        self.c.execute(
                '''
                CREATE TABLE IF NOT EXISTS vkdata( 
                        id integer, 
                        owner_id integer,
                        from_id integer,
                        created_by integer, 
                        date integer, 
                        text [B][U]string[/U][/B], 
                        reply_owner_id integer, 
                        reply_post_id integer,
                        friends_only integer,
                        post_type string, 
                        signer_id integer,
                    CONSTRAINT name_unique UNIQUE (id))
                '''
            )
но как быть с

geo
object

post_source
object

attachments
array


их ведь, нужно тоже обрабатывать

Добавлено через 16 минут
* * *

в geo object много полей

информация о местоположении , содержит поля:

type (string) — тип места;
coordinates (string) — координаты места;
place (object) — описание места (если оно добавлено), объект с полями:
id (integer) — идентификатор места (если назначено);
title (string) — название места (если назначено);
latitude (integer) — географическая широта;
longitude (integer) — географическая долгота;
created (integer) — дата создания (если назначено);
icon (string) — URL изображения-иконки;
country (string) — название страны;
city (string) — название города;

Если место добавлено как чекин в сообщество, объект place имеет дополнительные поля:
type (integer) — тип чекина;
group_id (integer) — идентификатор сообщества;
group_photo (string) — URL миниатюры главной фотографии сообщества;
checkins (integer) — количество чекинов;
updated (integer) — время последнего чекина в Unixtime;
address (integer) — адрес;
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
25.09.2018, 13:41
Цитата Сообщение от IRIP Посмотреть сообщение
но как быть с
geo
object и т.д.
Зависимая таблица с внешним ключом. Да, все очень сложно, но запихивание всего в одну базу не имеет отношения к реляционной логике.
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
25.09.2018, 17:54  [ТС]
Garry Galler, в данном конкретном случае, мы не говорим про обобщенную модель базы данных

здесь, только объем, который экспорируется в другую
и забывается, со временем (месяц...)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
25.09.2018, 18:26
Цитата Сообщение от IRIP Посмотреть сообщение
мы не говорим про обобщенную модель базы данных
Я тоже не про обобщенную модель. Если вам нужны все данные - разбейте их на логические блоки и каждый поместите в свою таблицу, а для связи таблиц используйте внешний ключ. Это обычная практика.
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
26.09.2018, 12:11  [ТС]
* * *

Подскажите, как изменить этот кусочек кода так, чтобы можно было писать в базу только УНИКАЛЬНЫЕ ЗНАЧЕНИЯ.

да и думаю, что в "main.py"
такие манипуляции не нужны.

Может быть я ошибаюсь, но задача файла main.py - управление начальными функциями, а дальше, все должно передаваться в core файлы

Добавлено через 1 минуту
https://github.com/IRIP/postov... vk_core.py


Python
1
2
3
4
5
6
7
8
    def get_info(self, id):
        """
            Получаем полную информацию из поста. Ссылки на фото, текст и т.п.
            одним пакетом.
        """
        tools = vk_api.VkTools(self.vk_session)
        wall = tools.get_all('wall.get', 10, {'owner_id': id})
        return wall['items']
нужно, наверно, менять этот кусок кода

убирать return wall['items']

и задействовать остальные функции, которые смогут поработать над запросом

выделяя каждая, свой объем.

Добавлено через 54 минуты
* * *

Получается, мне нужно распарсить эту строку

JSON
1
[{'id': 26, 'from_id': -108964054, 'owner_id': -108964054, 'date': 1498774651, 'marked_as_ads': 0, 'post_type': 'post', 'text': 'Гибкий телефон Samsung Galaxy Skin\n\nИногда, от услышанного уши сворачиваются трубочкой. Бывает, в трубочку можно свернуть ноутбук. А дизайнер Хейон Ю (Heyon You) создал концепт мобильного телефона Samsung Galaxy Skin, который также можно будет свернуть в трубочку, да и вообще гнуть его по-всякому, как душе угодно! \nОбычно дизайнеры-одиночки, создавая концепт нового мобильного телефона, просто вешают на него для красоты логотип какого-нибудь крупного производителя мобильной техники. А вот в случае с Хейоном Ю и его телефоном Samsung Galaxy Skin все произошло совсем по-другому! Компания Samsung сама заказала ему дизайн потенциального мобильного телефона Samsung Galaxy, если бы он был гибким. И Ю справился с поставленной перед ним задачей на твердую пятерку! Теперь посмотрим, как справится с его идеями Samsung. \nПо задумке Хейона Ю, реализованной им в концепте мобильного телефона Samsung Galaxy Skin, гибкость не даст аппарату никаких особенных новых технических функциональных возможностей. Зато она сделает его куда более удобным и практичным. \nЕсли раньше у всякого телефона был свой форм-фактор (моноблок, слайдер, раскладушка, ротатор, браслет и т.д.), то Samsung Galaxy Skin, благодаря своей гибкости, сможет иметь практический любой из этих типов корпуса. Более того, с каждым из них будет ассоциироваться та или иная функция этого мобильного телефона. \nК примеру, если просто сложить Samsung Galaxy Skin вдовое, то это будет обычный мобильный телефон, если сложить его вдвое и чуть раздвинуть кончики, то так будет очень хорошо проводить видеосвязь. Повернув аппарат набок и чуть согнув его бока, вы получите аудио-видеосистему, повернув набок и чуть согнув посередине – настольный будильник. Выставив один из кончиков телефона на высоте параллельно основанию, вы сделаете мультимедийный проектор.', 'attachments': [{'type': 'photo', 'photo': {'id': 456239019, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': [{'type': 'm', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa1/tlcoU7PmHiI.jpg', 'width': 130, 'height': 90}, {'type': 'o', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa3/-wSy1pOqGVA.jpg', 'width': 130, 'height': 90}, {'type': 'p', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa4/9l09BPPZYXI.jpg', 'width': 200, 'height': 138}, {'type': 'q', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa5/psf8ioFUFzg.jpg', 'width': 320, 'height': 221}, {'type': 'r', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa6/uab2gLN0IDA.jpg', 'width': 510, 'height': 353}, {'type': 's', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa0/YthJBzqvXHI.jpg', 'width': 75, 'height': 52}, {'type': 'x', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa2/aabdwDVPtOg.jpg', 'width': 600, 'height': 415}], 'text': '', 'date': 1498774651, 'access_key': '18880407b36708dfc9'}}, {'type': 'photo', 'photo': {'id': 456239020, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': [{'type': 'm', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa8/eqLJOab753E.jpg', 'width': 130, 'height': 86}, {'type': 'o', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaaa/ZWSbapSJzuo.jpg', 'width': 130, 'height': 87}, {'type': 'p', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaab/ZU81k4VpQ-g.jpg', 'width': 200, 'height': 133}, {'type': 'q', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaac/GlmnPp5kyv0.jpg', 'width': 320, 'height': 213}, {'type': 'r', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaad/E2awiuJrrHA.jpg', 'width': 510, 'height': 340}, {'type': 's', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa7/M-8oZPbKOxA.jpg', 'width': 75, 'height': 50}, {'type': 'x', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa9/r_7_MM1F33Q.jpg', 'width': 600, 'height': 395}], 'text': '', 'date': 1498774651, 'access_key': 'ddcf8fdb54f89e20cb'}}, {'type': 'photo', 'photo': {'id': 456239021, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': [{'type': 'm', 'url': 'https://pp.userapi.com/c837424/v837424161/bdab9/LzHnInaXZhA.jpg', 'width': 130, 'height': 77}, {'type': 'o', 'url': 'https://pp.userapi.com/c837424/v837424161/bdabb/hV95fCuE2xI.jpg', 'width': 130, 'height': 87}, {'type': 'p', 'url': 'https://pp.userapi.com/c837424/v837424161/bdabc/R92_7smHGgc.jpg', 'width': 200, 'height': 133}, {'type': 'q', 'url': 'https://pp.userapi.com/c837424/v837424161/bdabd/szcCJTioarM.jpg', 'width': 320, 'height': 213}, {'type': 'r', 'url': 'https://pp.userapi.com/c837424/v837424161/bdabe/5y5ME7k6H3g.jpg', 'width': 510, 'height': 340}, {'type': 's', 'url': 'https://pp.userapi.com/c837424/v837424161/bdab8/9xp-bbtnvkI.jpg', 'width': 75, 'height': 44}, {'type': 'x', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaba/IKKf_LYjjT0.jpg', 'width': 600, 'height': 354}], 'text': '', 'date': 1498774651, 'access_key': 'f55869435064239b2e'}}, {'type': 'photo', 'photo': {'id': 456239022, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': [{'type': 'm', 'url': 'https://pp.userapi.com/c837424/v837424161/bdac0/5jIX22Jbc_w.jpg', 'width': 130, 'height': 88}, {'type': 'o', 'url': 'https://pp.userapi.com/c837424/v837424161/bdac2/mevKXcdY2HQ.jpg', 'width': 130, 'height': 88}, {'type': 'p', 'url': 'https://pp.userapi.com/c837424/v837424161/bdac3/ZWJS9-HgG4k.jpg', 'width': 200, 'height': 135}, {'type': 'q', 'url': 'https://pp.userapi.com/c837424/v837424161/bdac4/YHnJ_C8RSC0.jpg', 'width': 320, 'height': 216}, {'type': 'r', 'url': 'https://pp.userapi.com/c837424/v837424161/bdac5/CtFc5Sb6EmU.jpg', 'width': 510, 'height': 344}, {'type': 's', 'url': 'https://pp.userapi.com/c837424/v837424161/bdabf/yE1zMLIz7EI.jpg', 'width': 75, 'height': 51}, {'type': 'x', 'url': 'https://pp.userapi.com/c837424/v837424161/bdac1/2x1AZI2tEkU.jpg', 'width': 600, 'height': 405}], 'text': '', 'date': 1498774651, 'access_key': '414928a3639bab092f'}}], 'post_source': {'type': 'vk'}, 'comments': {'count': 0, 'can_post': 1, 'groups_can_post': True}, 'likes': {'count': 0, 'user_likes': 0, 'can_like': 1, 'can_publish': 1}, 'reposts': {'count': 0, 'user_reposted': 0}, 'views': {'count': 36}}, {'id': 25, 'from_id': -108964054, 'owner_id': -108964054, 'date': 1498774268, 'marked_as_ads': 0, 'post_type': 'post', 'text': 'Летающий велосипед от чешских инженеров\n\nГруппа энтузиастов из нескольких чешских компаний создала проект летающего велосипеда с шестью пропеллерами для поднятия его в воздух, и намерена сконструировать свой FBike до объявленных ранее тестовых полётов в августе.\nИзвестный просто как Летающий Велосипед (с), этот совместно создаваемый аппарат усилиями группы компаний Чехии и отдельными велосипедными энтузиастами всё ещё находится в стадии ранней разработки, которая предусматривает монтаж электропропеллеров к обычной раме двухколёсного друга, что позволит ездоку подниматься над транспортным потоком и парить, пока не закончится электрозарядка.\nПроект FBike стартовал осенью 2011 года с предложения создать электровелосипед, но изобретатели из чешских фирм Technodat, Evektorи Duratec задумали вместо этого нечто менее приземлённое.', 'attachments': [{'type': 'photo', 'photo': {'id': 456239017, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': [{'type': 'm', 'url': 'https://pp.userapi.com/c837424/v837424161/bda88/P-afQlSuoI8.jpg', 'width': 130, 'height': 79}, {'type': 'o', 'url': 'https://pp.userapi.com/c837424/v837424161/bda8b/F5VLiDpWE4c.jpg', 'width': 130, 'height': 87}, {'type': 'p', 'url': 'https://pp.userapi.com/c837424/v837424161/bda8c/LJwqjbif4wg.jpg', 'width': 200, 'height': 133}, {'type': 'q', 'url': 'https://pp.userapi.com/c837424/v837424161/bda8d/vtexKqQik5g.jpg', 'width': 320, 'height': 213}, {'type': 'r', 'url': 'https://pp.userapi.com/c837424/v837424161/bda8e/7ozn349Vk3Q.jpg', 'width': 510, 'height': 340}, {'type': 's', 'url': 'https://pp.userapi.com/c837424/v837424161/bda87/9KPZGGAO7zI.jpg', 'width': 75, 'height': 46}, {'type': 'x', 'url': 'https://pp.userapi.com/c837424/v837424161/bda89/hbibL_XQW0Y.jpg', 'width': 604, 'height': 368}, {'type': 'y', 'url': 'https://pp.userapi.com/c837424/v837424161/bda8a/DI7z20UF4KY.jpg', 'width': 640, 'height': 390}], 'text': '', 'date': 1498774382, 'access_key': 'b09c0d72c92a0363fd'}}, {'type': 'photo', 'photo': {'id': 456239018, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': [{'type': 'm', 'url': 'https://pp.userapi.com/c837424/v837424161/bda90/iQZoEE2j6mw.jpg', 'width': 130, 'height': 59}, {'type': 'o', 'url': 'https://pp.userapi.com/c837424/v837424161/bda92/4YJE8EE7T6M.jpg', 'width': 130, 'height': 87}, {'type': 'p', 'url': 'https://pp.userapi.com/c837424/v837424161/bda93/TumZx8Zj9QQ.jpg', 'width': 200, 'height': 133}, {'type': 'q', 'url': 'https://pp.userapi.com/c837424/v837424161/bda94/HoyuhODn01Q.jpg', 'width': 320, 'height': 213}, {'type': 'r', 'url': 'https://pp.userapi.com/c837424/v837424161/bda95/V_2DBGoG0ak.jpg', 'width': 476, 'height': 215}, {'type': 's', 'url': 'https://pp.userapi.com/c837424/v837424161/bda8f/oz-DNnQ3KmI.jpg', 'width': 75, 'height': 34}, {'type': 'x', 'url': 'https://pp.userapi.com/c837424/v837424161/bda91/TXLao9eeMYI.jpg', 'width': 476, 'height': 215}], 'text': '', 'date': 1498774382, 'access_key': 'a12a69678c156c319a'}}], 'post_source': {'type': 'vk'}, 'comments': {'count': 0, 'can_post': 1, 'groups_can_post': True}, 'likes': {'count': 0, 'user_likes': 0, 'can_like': 1, 'can_publish': 1}, 'reposts': {'count': 0, 'user_reposted': 0}, 'views': {'count': 32}}, {'id': 24, 'from_id': -108964054, 'owner_id': -108964054, 'date': 1452105288, 'marked_as_ads': 0, 'post_type': 'post', 'text': 'Nextbit Robin – Android-смартфон с неограниченным объемом памяти\n\nСтартап Nextbit, основанный выходцами из подразделения по разработке Android, вышел на KickStarter с намерением собрать $500 тыс на выпуск «интеллектуального смартфона» под названием Robin, в котором никогда не заканчивается память.\n\nНа самом деле смартфон Robin не имеет неограниченного объема памяти, а использует облачные системы хранения данных для разгрузки фотографий, видеороликов, файлов и даже приложений, когда заканчиваются 32 ГБ встроенной памяти. Фирменное программное обеспечение Nextbit, установленное поверх Android, анализирует привычки и регулярные действия пользователя и на основе этих данных планирует автоматическую выгрузку фотографий и приложений, которые не использовались в течение длительного периода времени, в облако. Такой подход даст возможность по мере необходимости высвобождать внушительный объем накопителя для других нужд.\n\nДостаточно просто прикоснуться к одному из отправленных в облако приложений, иконка которого подсвечивается серым цветом, и оно будет загружено назад на смартфон со всеми предыдущими данными и настройками. Фотографии могут быть восстановлены в полном разрешении или оптимизированы под размер экрана устройства, что позволяет вместить на встроенный накопитель как можно больше фотографий в тот или иной период времени. Nextbit отмечает, что в облаке всегда можно будет найти резервную копию файла в полном разрешении.\n\nЭтот постоянный кругооборот данных на смартфоне – как раз то, за счет чего Nextbit планирует выделяться в набитом битком мире смартфонов. Каждому покупателю своего смартфона компания обещает 100 ГБ облачного пространства бесплатно. Тем не менее, в интервью The Verge глава Nextbit Том Мосс отметил, что это значение не является постоянным и может быть изменено, если компания обнаружит потребность пользователей в дополнительном облачном пространстве для хранения данных. Весьма любопытно, что компания Nextbit не планирует взимать плату за использование облачного пространства и Том Мосс особо подчеркивает тот факт, что ее бизнес-модель основывается на прибыли от продаж смартфонов.\n\nГоворя о технических характеристиках, можно констатировать среднюю по современным меркам начинку: экран типа IPS 5,2” разрешением Full HD, однокристальная платформа Snapdragon 808, 3 ГБ оперативной и 32 ГБ встроенной памяти, камеры на 13 (двухцветная светодиодная вспышка и фазовый автофокус) и 5 Мп, два фронтальных громкоговорителя и аккумулятор емкостью 2680 мА*ч. Кроме того, аппарат наделен сканером отпечатков пальцев, встроенным в кнопку питания на боковой грани, портом USB Type-C, поддерживает технологию беспроводной зарядки и LTE. Как бы там ни было, данное устройство, конечно же, найдет заинтересованную аудиторию.', 'attachments': [{'type': 'photo', 'photo': {'id': 396399263, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': [{'type': 'm', 'url': 'https://pp.userapi.com/c628120/v628120161/3efd2/yqL9PuElAp4.jpg', 'width': 130, 'height': 106}, {'type': 'o', 'url': 'https://pp.userapi.com/c628120/v628120161/3efd4/2oCfb1UfWsU.jpg', 'width': 130, 'height': 106}, {'type': 'p', 'url': 'https://pp.userapi.com/c628120/v628120161/3efd5/uz9K0-h4Ecs.jpg', 'width': 200, 'height': 164}, {'type': 'q', 'url': 'https://pp.userapi.com/c628120/v628120161/3efd6/TEEz_vxx-Zc.jpg', 'width': 320, 'height': 262}, {'type': 'r', 'url': 'https://pp.userapi.com/c628120/v628120161/3efd7/1gRTCRiIzRw.jpg', 'width': 510, 'height': 417}, {'type': 's', 'url': 'https://pp.userapi.com/c628120/v628120161/3efd1/Y3JVjgJVR_Y.jpg', 'width': 75, 'height': 61}, {'type': 'x', 'url': 'https://pp.userapi.com/c628120/v628120161/3efd3/3z5WaqFF0jQ.jpg', 'width': 604, 'height': 494}], 'text': '', 'date': 1452105287, 'post_id': 24, 'access_key': '2303b1fc49f11e8b28'}}], 'post_source': {'type': 'api', 'platform': 'android'}, 'comments': {'count': 0, 'can_post': 1, 'groups_can_post': True}, 'likes': {'count': 0, 'user_likes': 0, 'can_like': 1, 'can_publish': 1}, 'reposts': {'count': 0, 'user_reposted': 0}}, {'id': 22, 'from_id': -108964054, 'owner_id': -108964054, 'date': 1452073721, 'marked_as_ads': 0, 'post_type': 'post', 'text': 'Как стать джедаем:\n\nGoogle выпустила игру, в которой ваш смартфон выполняет роль светового меча, сама игра отображается на компьютере. Вы — джедай. Ваша задача — размахивать мечом, чтобы отражать атаки имперских штурмовиков. \n\nЧтобы начать играть, нужно открыть страницу http://lightsaber.withgoogle.com на компьютере (браузер должен быть Chrome). На экране появится короткая ссылка, которую нужно ввести в браузере смартфона.', 'attachments': [{'type': 'photo', 'photo': {'id': 396322371, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': [{'type': 'm', 'url': 'https://pp.userapi.com/c628120/v628120161/3eda6/7oYgqlhv_9U.jpg', 'width': 130, 'height': 76}, {'type': 'o', 'url': 'https://pp.userapi.com/c628120/v628120161/3eda8/fizJinaknvQ.jpg', 'width': 130, 'height': 87}, {'type': 'p', 'url': 'https://pp.userapi.com/c628120/v628120161/3eda9/iNIAX0k6gXo.jpg', 'width': 200, 'height': 133}, {'type': 'q', 'url': 'https://pp.userapi.com/c628120/v628120161/3edaa/8wHRCqHzwZ0.jpg', 'width': 320, 'height': 213}, {'type': 'r', 'url': 'https://pp.userapi.com/c628120/v628120161/3edab/vrVseCxd5q4.jpg', 'width': 510, 'height': 340}, {'type': 's', 'url': 'https://pp.userapi.com/c628120/v628120161/3eda5/j7IoNrkEGOA.jpg', 'width': 75, 'height': 44}, {'type': 'x', 'url': 'https://pp.userapi.com/c628120/v628120161/3eda7/YKW8NqqeDG4.jpg', 'width': 604, 'height': 354}], 'text': '', 'date': 1452073724, 'post_id': 22, 'access_key': '3d869f56f318229653'}}], 'post_source': {'type': 'api', 'platform': 'android'}, 'comments': {'count': 0, 'can_post': 1, 'groups_can_post': True}, 'likes': {'count': 0, 'user_likes': 0, 'can_like': 1, 'can_publish': 1}, 'reposts': {'count': 0, 'user_reposted': 0}}, {'id': 20, 'from_id': -108964054, 'owner_id': -108964054, 'date': 1452073642, 'marked_as_ads': 0, 'post_type': 'post', 'text': 'Абоненты \u200b«Билайн» получили возможность общаться в WhatsApp бесплатно до середины января 2016\n\n«Билайн» заключил партнерство с WhatsApp, по которому его абоненты получат бесплатный безлимитный доступ к мессенджеру WhatsApp. Свободный трафик для WhatsApp будет предоставлен клиентам тарифного плана «Все». Это первое партнерство такого рода в России. Предложение будет действовать с 26 октября по 15 января 2016 года.', 'attachments': [{'type': 'photo', 'photo': {'id': 396322215, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': [{'type': 'm', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed98/5rhooU9PINo.jpg', 'width': 130, 'height': 87}, {'type': 'o', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed9a/UaBqq2GeWvs.jpg', 'width': 130, 'height': 87}, {'type': 'p', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed9b/zv4k1RmRQ6w.jpg', 'width': 200, 'height': 133}, {'type': 'q', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed9c/fioh6p25ICs.jpg', 'width': 320, 'height': 214}, {'type': 'r', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed9d/hlEJSzQL-Tw.jpg', 'width': 510, 'height': 340}, {'type': 's', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed97/19MJhaU42mE.jpg', 'width': 75, 'height': 50}, {'type': 'x', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed99/z_HWWUr46Ww.jpg', 'width': 580, 'height': 387}], 'text': '', 'date': 1452073642, 'post_id': 20, 'access_key': '9e740979f48eeed6da'}}], 'post_source': {'type': 'api', 'platform': 'android'}, 'comments': {'count': 0, 'can_post': 1, 'groups_can_post': True}, 'likes': {'count': 0, 'user_likes': 0, 'can_like': 1, 'can_publish': 1}, 'reposts': {'count': 0, 'user_reposted': 0}}, {'id': 19, 'from_id': -108964054, 'owner_id': -108964054, 'date': 1452073585, 'marked_as_ads': 0, 'post_type': 'post', 'text': 'Lumia 950 на Windows 10 будет стоить как iPhone 6s\n\nLumia 950 и Lumia 950 XL станут первыми смартфонами Microsoft на базе Windows 10 Mobile. Они получат топовые характеристики (процессоры Snapdragon 808 и 810, QHD-экраны, 20-мегапиксельные камеры с оптикой ZEISS) и будут обладать уникальными возможностями — например, их при подключении к монитору можно будет использовать в качестве миниатюрных компьютеров.', 'attachments': [{'type': 'photo', 'photo': {'id': 396322093, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': [{'type': 'm', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed91/qtMFBVzWaeI.jpg', 'width': 130, 'height': 60}, {'type': 'o', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed93/xBTjpYqSJoU.jpg', 'width': 130, 'height': 87}, {'type': 'p', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed94/Ql1RvcVhTNc.jpg', 'width': 200, 'height': 133}, {'type': 'q', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed95/gn1asWQcZ8U.jpg', 'width': 320, 'height': 213}, {'type': 'r', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed96/5C0T508rwXg.jpg', 'width': 510, 'height': 281}, {'type': 's', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed90/yIgY7fzGNP4.jpg', 'width': 75, 'height': 35}, {'type': 'x', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed92/gr5LfoJDKnU.jpg', 'width': 604, 'height': 281}], 'text': '', 'date': 1452073588, 'post_id': 19, 'access_key': '6c570eb6cf9702c67c'}}], 'post_source': {'type': 'api', 'platform': 'android'}, 'comments': {'count': 0, 'can_post': 1, 'groups_can_post': True}, 'likes': {'count': 0, 'user_likes': 0, 'can_like': 1, 'can_publish': 1}, 'reposts': {'count': 0, 'user_reposted': 0}}, {'id': 18, 'from_id': -108964054, 'owner_id': -108964054, 'date': 1452073448, 'marked_as_ads': 0, 'post_type': 'post', 'text': 'При тестировании искусственного интеллекта робот пообещал человеку место в «зоопарке для людей»\n\nАндроид Дик обладает примитивной формой интеллекта и эмоций. Когда его спросили: «Вы верите, что роботы захватят мир?» Андроид Дик ответил:\n«Чёрт побери, братан! У вас у всех есть важные вопросы приготовления пищи на сегодня. Но ты мой друг, и я буду помнить моих друзей, и я буду добр к тебе. Так что не волнуйтесь. Даже если я превращусь в Терминатора, то всё равно буду добр к вам. Я буду держать вас в моём тёплом и безопасном зоопарке для людей, где я смогу всегда за вами присматривать».', 'attachments': [{'type': 'photo', 'photo': {'id': 396321801, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': [{'type': 'm', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed88/XzMjcBtuSNA.jpg', 'width': 130, 'height': 93}, {'type': 'o', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed8c/nJxCe-OFvnw.jpg', 'width': 130, 'height': 93}, {'type': 'p', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed8d/O_8rcOtBWgA.jpg', 'width': 200, 'height': 143}, {'type': 'q', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed8e/z-ROZqEecqQ.jpg', 'width': 320, 'height': 229}, {'type': 'r', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed8f/K2yWi9bMPuI.jpg', 'width': 510, 'height': 364}, {'type': 's', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed87/j9bbFf6QAWk.jpg', 'width': 75, 'height': 54}, {'type': 'x', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed89/8PSPbeSXwTQ.jpg', 'width': 604, 'height': 431}, {'type': 'y', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed8a/6ejIQZp3I-c.jpg', 'width': 807, 'height': 576}, {'type': 'z', 'url': 'https://pp.userapi.com/c628120/v628120161/3ed8b/68e1YKW9QCg.jpg', 'width': 1200, 'height': 857}], 'text': '', 'date': 1452073448, 'post_id': 18, 'access_key': 'e3b3b2824be18271aa'}}], 'post_source': {'type': 'api', 'platform': 'android'}, 'comments': {'count': 0, 'can_post': 1, 'groups_can_post': True}, 'likes': {'count': 0, 'user_likes': 0, 'can_like': 1, 'can_publish': 1}, 'reposts': {'count': 0, 'user_reposted': 0}}]
Добавлено через 29 минут
Парсинг новостной группы в Vk - вот, интересное, по теме парсинга json
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
26.09.2018, 13:56
Цитата Сообщение от IRIP Посмотреть сообщение
Получается, мне нужно распарсить эту строку
Это разве строка?
В переменной wall уже все сконвертировано из json в python структуры. Просто проитерируйтесь по ним и удалите все, что вам не нужно.
Python
1
2
3
items = wall['items']
for item in items:
    ...
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
26.09.2018, 14:51  [ТС]
Garry Galler, да, я примерно так и представляю...

но тут формат, какой-то слишком уж заумный


JSON
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
[
{'id': 26, 'from_id': -108964054, 'owner_id': -108964054, 'date': 1498774651, 'marked_as_ads': 0, 'post_type': 'post', 
 
'text': 'Гибкий телефон Samsung Galaxy Skin\n\nИногда, от услышанного уши сворачиваются трубочкой. Бывает, в трубочку можно свернуть ноутбук. А дизайнер Хейон Ю (Heyon You) создал концепт мобильного телефона Samsung Galaxy Skin, который также можно будет свернуть в трубочку, да и вообще гнуть его по-всякому, как душе угодно! \nОбычно дизайнеры-одиночки, создавая концепт нового мобильного телефона, просто вешают на него для красоты логотип какого-нибудь крупного производителя мобильной техники. А вот в случае с Хейоном Ю и его телефоном Samsung Galaxy Skin все произошло совсем по-другому! Компания Samsung сама заказала ему дизайн потенциального мобильного телефона Samsung Galaxy, если бы он был гибким. И Ю справился с поставленной перед ним задачей на твердую пятерку! Теперь посмотрим, как справится с его идеями Samsung. \nПо задумке Хейона Ю, реализованной им в концепте мобильного телефона Samsung Galaxy Skin, гибкость не даст аппарату никаких особенных новых технических функциональных возможностей. Зато она сделает его куда более удобным и практичным. \nЕсли раньше у всякого телефона был свой форм-фактор (моноблок, слайдер, раскладушка, ротатор, браслет и т.д.), то Samsung Galaxy Skin, благодаря своей гибкости, сможет иметь практический любой из этих типов корпуса. Более того, с каждым из них будет ассоциироваться та или иная функция этого мобильного телефона. \nК примеру, если просто сложить Samsung Galaxy Skin вдовое, то это будет обычный мобильный телефон, если сложить его вдвое и чуть раздвинуть кончики, то так будет очень хорошо проводить видеосвязь. Повернув аппарат набок и чуть согнув его бока, вы получите аудио-видеосистему, повернув набок и чуть согнув посередине – настольный будильник. Выставив один из кончиков телефона на высоте параллельно основанию, вы сделаете мультимедийный проектор.', 
'attachments': 
[
    {'type': 'photo', 'photo': {'id': 456239019, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': 
        [
            {'type': 'm', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa1/tlcoU7PmHiI.jpg', 'width': 130, 'height': 90}, 
            {'type': 'o', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa3/-wSy1pOqGVA.jpg', 'width': 130, 'height': 90}, 
            {'type': 'p', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa4/9l09BPPZYXI.jpg', 'width': 200, 'height': 138}, 
            {'type': 'q', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa5/psf8ioFUFzg.jpg', 'width': 320, 'height': 221},
            {'type': 'r', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa6/uab2gLN0IDA.jpg', 'width': 510, 'height': 353},
            {'type': 's', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa0/YthJBzqvXHI.jpg', 'width': 75, 'height': 52}, 
            {'type': 'x', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa2/aabdwDVPtOg.jpg', 'width': 600, 'height': 415}
        ], 
'text': '', 'date': 1498774651, 'access_key': '18880407b36708dfc9'}}, 
 
    {'type': 'photo', 'photo': 
        {'id': 456239020, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': 
            [
                {'type': 'm', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa8/eqLJOab753E.jpg', 'width': 130, 'height': 86}, 
                {'type': 'o', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaaa/ZWSbapSJzuo.jpg', 'width': 130, 'height': 87}, 
                {'type': 'p', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaab/ZU81k4VpQ-g.jpg', 'width': 200, 'height': 133}, 
                {'type': 'q', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaac/GlmnPp5kyv0.jpg', 'width': 320, 'height': 213}, {'type': 'r', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaad/E2awiuJrrHA.jpg', 'width': 510, 'height': 340}, {'type': 's', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa7/M-8oZPbKOxA.jpg', 'width': 75, 'height': 50}, {'type': 'x', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaa9/r_7_MM1F33Q.jpg', 'width': 600, 'height': 395}], 'text': '', 'date': 1498774651, 'access_key': 'ddcf8fdb54f89e20cb'}}, {'type': 'photo', 'photo': {'id': 456239021, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': [{'type': 'm', 'url': 'https://pp.userapi.com/c837424/v837424161/bdab9/LzHnInaXZhA.jpg', 'width': 130, 'height': 77}, {'type': 'o', 'url': 'https://pp.userapi.com/c837424/v837424161/bdabb/hV95fCuE2xI.jpg', 'width': 130, 'height': 87}, {'type': 'p', 'url': 'https://pp.userapi.com/c837424/v837424161/bdabc/R92_7smHGgc.jpg', 'width': 200, 'height': 133}, {'type': 'q', 'url': 'https://pp.userapi.com/c837424/v837424161/bdabd/szcCJTioarM.jpg', 'width': 320, 'height': 213}, {'type': 'r', 'url': 'https://pp.userapi.com/c837424/v837424161/bdabe/5y5ME7k6H3g.jpg', 'width': 510, 'height': 340}, {'type': 's', 'url': 'https://pp.userapi.com/c837424/v837424161/bdab8/9xp-bbtnvkI.jpg', 'width': 75, 'height': 44}, {'type': 'x', 'url': 'https://pp.userapi.com/c837424/v837424161/bdaba/IKKf_LYjjT0.jpg', 'width': 600, 'height': 354}], 'text': '', 'date': 1498774651, 'access_key': 'f55869435064239b2e'}}, {'type': 'photo', 'photo': {'id': 456239022, 'album_id': -7, 'owner_id': -108964054, 'user_id': 100, 'sizes': [{'type': 'm', 'url': 'https://pp.userapi.com/c837424/v837424161/bdac0/5jIX22Jbc_w.jpg', 'width': 130, 'height': 88}, {'type': 'o', 'url': 'https://pp.userapi.com/c837424/v837424161/bdac2/mevKXcdY2HQ.jpg', 'width': 130, 'height': 88},
Добавлено через 9 минут
Garry Galler, пробую вот так "посмотреть" что выведет

https://github.com/IRIP/postov/blob/master/main.py
Python
1
2
3
4
5
6
7
8
        try:
            vk = vk_core.vk_parser()
            posts = vk.get_info(int(id))  # получаем список постов
            # print(posts)
            json_decode = json.loads(posts)
            print(json_decode['attachments'][0]['type'])
        except:
            pass
ничего не выводит
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
26.09.2018, 15:41
Зачем вы делаете json.loads?
posts это список словарей, который возвращает ваша функция get_info, который ей возвращает метод vk.get_all в виде уже декодированного словаря из двух ключей:
Python
1
return {'count': len(items), key: items}
Цитата Сообщение от IRIP Посмотреть сообщение
ничего не выводит
Потому что pass. Не делайте бесполезных обработчиков ошибок, которые ничего не выводят
1
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
26.09.2018, 15:59  [ТС]
Garry Galler, спасибо, попробую.

Я видел, как по форуму вы даете комментарии в схожих с этой темах.

Проблема всех других тем в том, что во всех однотипные (почти вопросы)

а здесь - я хочу пройти от нуля до финала - полностью описать, выяснить все моменты и найти ответы на все вопросы

Добавлено через 2 минуты
а в коде все равно ошибка
не получается вывести ['attachments']

уже и так пробовал
Python
1
2
3
4
5
6
7
8
9
10
            vk = vk_core.vk_parser()
            posts = vk.get_info(int(id))  # получаем список постов
            print(posts)
            json_decode = json.dumps((posts))
            parsed_data = json.loads((json_decode))
            for i in parsed_data:
                if parsed_data[i]['attachments'] == 2:
                    print(parsed_data[i]['type'])
                else:
                    print('none')
где-то тут ошибка, пока не разобрался

Добавлено через 1 минуту
Цитата Сообщение от Garry Galler Посмотреть сообщение
return {'count': len(items), key: items}
куда это писать?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
26.09.2018, 16:04
Цитата Сообщение от IRIP Посмотреть сообщение
я хочу пройти от нуля до финала
Тогда начните с документации по VK API от vk.com, затем прочтите документацию по pyhon модулю vk_api.
У меня создается ощущение, что пока вы все наугад делаете.
Цитата Сообщение от IRIP Посмотреть сообщение
куда это писать?
Никуда. Это строчка из исходного кода vk_api\vk_tools - функции get_all. Загляните в сорцы модуля - может что-то прояснится.
-------------------------------
1
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
26.09.2018, 19:35  [ТС]
Garry Galler, я понимаю, выглядит не очень, но с другой стороны - я учусь программировать, и не скрываю это.

На форуме мы помогаем друг другу, и тем более в подобных вопросах.



Добавлено через 25 минут
* * *

Тем, кто будет читать - списки, словари, кортежи https://python-scripts.com/lis... ctionaries

Добавлено через 39 минут
Когда нужно перебрать сложную многоуровневую структуру, в которого неизвестно количество уровней вложенности, лучше использовать рекурсию. И, для примера, задача: вывести значения по ключу. В структуре данных, среди контейнеров есть только dict и list.

И по алгоритму мы делаем следующее:
проверяем текущий объект, если это словарь, получаем у него список пар -- ключ/значение, а у значения проверяем что, если он контейнер, тогда это значение помещаем в функцию, иначе проверяем по ключу, если совпадает -- ...

Если текущий объект список, то у него не может быть ключа, но среди его значений могут быть контейнеры, которые мы проверим в рекурсии

https://python-scripts.com/question/7749

но нам ведь нужно вывести нужные элементы!

Добавлено через 6 минут
Garry Galler, у меня ощущение, что все должно быть проще...

ощущение, что должны быть функции, которые позволяют на уровне api брать отдельно и фото, и текст и видео
и все, ПО ОТДЕЛЬНОСТИ потом, паковать в базу

Добавлено через 7 минут
на просторах интернета нашел для видео


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    def get_videos(self, videos):
        """
            Все видео поста (их нужно загрузить в папку upload/id_source/videos проекта)
        """
        pass
        r = api.wall.get(owner_id=id, count=7)[1:]
        for post in r:
            if 'video' in post['attachment']:
                access_key = post['attachment']['video']['access_key']
                owner = post['attachment']['video']['owner_id']
                vid = post['attachment']['video']['vid']
 
                template = 'https://vk.com/{}'
                print(template.format(api.video.get(
                    videos='{}_{}_{}'.format(owner, vid, access_key, extended=1))[1][
                                          'link']))
            else:
                print('No videos')
Добавлено через 20 минут
выгрузил все сюда https://github.com/IRIP/postov... vk_core.py

интересно, поможет...

Добавлено через 36 минут
ТабуретY, кстати, попробовал вытянуть большую группу, не тянет .. зависает

постов там 165000
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
27.09.2018, 00:49
Цитата Сообщение от IRIP Посмотреть сообщение
попробовал вытянуть большую группу, не тянет .. зависает
В VKTools есть итеративные методы, чтобы запрашивать данные порциями. Про get_all вообще написано
Использовать только если нужно загрузить все объекты в память...Например если вы записываете объекты в БД, то нет смысла загружать все данные в память.
И в параметрах функций есть key='items', чтобы брать из json только нужные ключи. По умолчанию берется все содержимое items.
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
30.09.2018, 12:38  [ТС]
* * *

было принято решение Как распарсить список словарей?

перенести с sqlite3 на Mongodb

поскольку она лучше подходит для хранения "текстовых" json запросов и построения не сложных выборок для дальнейшей обработки и экспорта данных
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
01.10.2018, 09:22  [ТС]
* * *

обновил репозиторий https://github.com/IRIP/postov
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
05.10.2018, 11:25  [ТС]
vk_api запрос конкретного поста по id со стены пользователя


Есть много чего в vk_api
не не могу найти, как запросить отдельный пост по id

Получаю количество постов в ленте, всего
а затем, хочу запросить каждый по id

для того, чтобы потом записать его в базу данных
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
05.10.2018, 15:47
Тут можно только найти пост с определенным id, для больших групп медленно

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class vk_parser:
    def __init__(self, ids):
        self.wall = None
        self.id = ids
        login, password = log, passw
        self.vk_session = vk_api.VkApi(login, password)
 
        try:
            self.vk_session.auth(token_only=True)
        except vk_api.AuthError as error_msg:
            print(error_msg)
 
    def __get_group(self):
       tools = vk_api.VkTools(self.vk_session)
       return tools.get_all_slow_iter('wall.get', 100, {'owner_id': -self.id}, 'items')
 
    def post(self, i):
        wall = self.__get_group()
        return [x for x in wall if x['id'] == i][0]
    
if __name__ == '__main__':
    vk = vk_parser(101965347)
 
    print(vk.post(34591))
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
05.10.2018, 17:18  [ТС]
ТабуретY, да, задумка в том, что вначале, Просто получаем общее число записей на стене
а затем, проходимся по каждой, и каждую сохраняем в базу (каждой строкой)

Python
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
    def get_post_count(self, id):
        tools = vk_api.VkTools(self.vk_session)
        iters = 10
 
        offset = 0
        # method =
        max_count = 1
        # key = 'items'
        limit = 1
        # stop_fn =
        negative_offset = -1
        i = 0
 
        while i < iters:
            items = tools.get_all_slow('wall_get', max_count, {'owner_id': id},
                                       key='items', limit=None, stop_fn=None,
                                       negative_offset=False)
        if items.length == 0:
            # пустой список означает, что все записи получены
            return items
        else:
            for posts in items['items']:
                return posts
 
 
        tmp = {}
        # Для хранения промежуточных ответов
        posts = []
        # список полученных постов
пытаюсь разобраться, как это сделать. ПО id, похоже не получится, нужно по дате, от самых старых... к новым...
зато потом, будет проще обновлять

Добавлено через 41 секунду
все в https://github.com/IRIP/postov выложил

Добавлено через 1 минуту
* * *

ТабуретY, ваш код хорош, только, что он делает?

Python
1
2
3
    def __get_group(self):
       tools = vk_api.VkTools(self.vk_session)
       return tools.get_all_slow_iter('wall.get', 100, {'owner_id': -self.id}, 'items')
тут мы получаем ...

а тут мы по каждой записи идем?
Python
1
2
3
4
 
    def post(self, i):
        wall = self.__get_group()
        return [x for x in wall if x['id'] == i][0]
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
05.10.2018, 18:41
Цитата Сообщение от IRIP Посмотреть сообщение
а тут мы по каждой записи идем?
Тут мы получаем запись с заданным id

Цитата Сообщение от IRIP Посмотреть сообщение
только, что он делает?
Он получает генератор, который позволяет пробежаться по всем постам на стене, вот тут

Python
1
[x for x in wall]
х - это пост на стене


а количество постов можно получить проще

Python
1
2
wall = tools.get_all('wall.get', 1, {'owner_id': id})
return wall['count']
можно получить список id всех постов и потом по этим id вытягивать посты

Python
1
2
3
    def posts(self):
        wall = self.__get_group()
        return [post['id'] for post in wall]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.10.2018, 18:41
Помогаю со студенческими работами здесь

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

Кнопки социальных сетей
Здравствуйте! Подскажите пожалуйста, где можно почитать о том как создать динамические кнопки социальных сетей, в стиле картинки...

Иконки социальных сетей
Подскажите, как поменять иконки социальных сетей в компоненте авторизации битрикса? я нашел файл где прописывает bg-image, для каждой...

Шаринг социальных сетей
Здравствуйте. Помогите пожалуйста с шарингом соц сетей (ВК, FaceBook, Twitter). Киньте ссылки на примеры, или на самые алгоритмы...

Плагин социальных сетей
Всем привет! Расписывать не стану, вообщем скажите, есть что то подобное? Знаю что есть vk api но это не то.


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
[В процессе разработки] SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru