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

Как распарсить список словарей?

28.09.2018, 11:37. Показов 5747. Ответов 66
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть список словарей, объем любой, разграничиваются только по id

наборы данных тоже ...

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
[
    {'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}}
]

нужно привести к удобочитаемому виду и подготовить данные к передаче в базу данных, для последующего анализа
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.09.2018, 11:37
Ответы с готовыми решениями:

Массив: Создать БД как список словарей, получив информацию из файла
Создать БД как список словарей, получив информацию из файла. Число полей(ключей) не менее 5. Реализовать отдельными функциями добавление,...

Список из словарей
Добрый день! Подскажите, пожалуйста, в чем ошибка при решении задачи? Разработчики поменяли формат выгрузки из базы данных товарных...

Список из словарей
как из этого списка словарей получить все url ? помогите пожалуйста Можно ли сделать через filter ?

66
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
01.10.2018, 12:50  [ТС]
Студворк — интернет-сервис помощи студентам
vic5710, речь ведется вот про эту программу https://github.com/IRIP/postov

Добавлено через 7 минут
Цитата Сообщение от vic5710 Посмотреть сообщение
чот я не понимаю твоих страданий
1. анализ json
2. создание БД с нужными полями
3. получение JSON (posts) и запись в БД

это все делаю в файле https://github.com/IRIP/postov/blob/master/main.py

но на третьем этапе, возникают сложности.

1. Нужно аттачи сохранять отдельно, а в базу вставлять ссылки на них (относительные)

Добавлено через 26 минут
вот в 'attachments' вопрос
как его отдельно сохранять

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

в attachments нужно каждый новый объект - отдельной записью

так можно сделатЬ? Почему-то не работает

Python
1
2
3
4
5
6
7
8
9
10
    def save(self, source, attachments):
        self.c.executemany("INSERT OR IGNORE INTO source(id) VALUES (?,?,?)", source)
        self.c.executemany("INSERT OR IGNORE INTO attachments(id) VALUES (?,?,?)",
                           attachments)
 
        # Сохранение (commit) изменений
        self.conn.commit()
 
        # Закрытие курсора, в случае если он больше не нужен
        self.conn.close()
Добавлено через 13 минут
понятно, что нужно расписать... но вот с attachments - проблема

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            if to_dos == 1:
                bases = sqlite_base(name_db)
                source = [
                    (
                        posts[i]['id'],
                        posts[i]['date'],
                        posts[i]['text'],
                        posts[i]['']
                        ) for i in range(len(posts)
                    )
                ]
                attachments = [
                    (
 
                    )
                ]
                bases.save(source, attachments)
Добавлено через 1 минуту
https://vk.com/page-1_41248202
0
431 / 302 / 90
Регистрация: 03.12.2015
Сообщений: 741
01.10.2018, 13:09
Вложения лучше не хранить в базе напрямую. Лучше хранить их в папке на диске, а в базе хранить - ссылку на этот файл (путь к файлу).

Обработка вложений может осуществляться следующим образом:
- определить тип вложения (photo, video, doc и т.п.)
- по типу определить ссылку для скачивания вложения (src, src_big, image_src)
- скачать вложение в определенную папку (создать файл)
- сохранить путь к этому файлу в базе

Судя по документации с вложениями есть куча нюансов, например:
- видео - могут занимать очень много места
- app - по-моему вообще скачать невозможно
- link - скачивать страницу по ссылке?
- poll - что здесь считать вложением?
и т.п.

Еще вариант - вообще не сохранять вложения. Можно просто в базе сохранить информацию о вложении (полученную от vk), а сами вложения выкачивать по-необходимости.

В общем, может не стоит скачивать весь vk? А исходить из целей обработки всех этих данных?
1
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
01.10.2018, 13:17
для анализа сделай
Python
1
print(json.dumps(posts[0]['attachments'],indent=4))
увидишь всю структуру
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
01.10.2018, 13:49  [ТС]
Цитата Сообщение от vrm2 Посмотреть сообщение
Обработка вложений может осуществляться следующим образом

а Если так?

создаем две таблицы, в одной source (дата, тайтл и т.п.) а во второй - attachments в следующем формате: https://github.com/IRIP/postov... te_core.py


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
      # Вставка ряда данных
        self.c.execute(
                '''
                CREATE TABLE IF NOT EXISTS source( 
                        post_id,
                        id integer, 
                        date date,
                        text integer,
                        lat int ,
                        lng int,
                        place_id integer ,                        
                        post_source integer,
                        profiles integer,
                    CONSTRAINT name_unique UNIQUE (post_id))
                '''
            )
        self.c.execute(
                '''
                CREATE TABLE IF NOT EXISTS attachments( 
                        id int,
                        post_id,
                        type integer,
                        dict integer
                    CONSTRAINT name_unique UNIQUE (id))
                '''
            )
в attachments пишем ряд - id, post_id, type (photo, video и т.п.) а дальше dict - и просто вставляем целиком словарь, например JSON для photo и link

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
26
27
28
29
"attachments": [{
  "type": "link",
  "link": {
    "url":"http:\/\/www.youtube.com\/watch?v=8xe1DlP2bpc",
    "title":"АнгелиЯ - В контакте мы - ПРЕМЬЕРА КЛИПА!!!!",
    "description":"АнгелиЯ - В контакте мы \\ ДОЛГОЖДАННАЯ ПРЕМЬЕРА КЛИПА\\ www.angeliya.com.ua",
    "image_src":"http:\/\/cs4638.vkontakte.ru\/u93388\/-2\/x_d5a02d15.jpg"
  }
}]
 
 
"attachments": [{
    "type": "photo",
    "photo": {
        "pid": 301495167,
        "aid": -2,
        "owner_id": -3223583,
        "user_id": 100,
        "src": "http://cs419227.vk.me/v419229941/1417/A9iVSHiZtZk.jpg",
        "src_big": "http://cs419227.vk.me/v419229841/1498/Ih3PdfBgRbI.jpg",
        "src_small": "http://cs419227.vk.me/v415727441/1126/37H8bXaWboU.jpg",
        "width": 305,
        "height": 583,
        "text": "",
        "created": 1375352047,
        "post_id": "96",
        "access_key": "0b57baff054c7e94a4"
    }
}],
Добавлено через 3 минуты
vic5710, вот я и подумал, что в attachments нужно вкладывать весь словарь, целиком...

но как?!

вот тут: https://github.com/IRIP/postov/blob/master/main.py

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            if to_dos == 1:
                bases = sqlite_base(name_db)
                source = [
                    (
                        posts[i]['id'],
                        posts[i]['date'],
                        posts[i]['text'],
                        posts[i]['']
                        ) for i in range(len(posts)
                    )
                ]
                attachments = [
                    (
 
                    )
                ]
                bases.save(source, attachments)
Добавлено через 8 минут
* * *

вот так не работает

Python
1
2
3
4
5
6
                attachments = [
                    (
                        posts[i]['attachments'][i]['type'],
                        ) for i in range(len(posts)
                    )
                ]
Добавлено через 40 секунд
* * *

и их еще как-то нужно синхронизировать, чтобы КАЖДОМУ ПОСТУ соответствовал свой attach...
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
01.10.2018, 16:31
Цитата Сообщение от IRIP Посмотреть сообщение
posts[i]['attachments'][i]['type']
Python
1
posts[i]['attachments']['type']
ну можешь добавить post_id и сделать дамп, будет строка
Python
1
s  = json.dumps([{'post_id':posts[i]['id']}] + posts[i]['attachments'])
1
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
01.10.2018, 16:44  [ТС]
vic5710, следующая проблема, с которой столкнулся - это количество постов.

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', 100, {'owner_id': id})
        return wall['items']
получает только определенное количество постов, а потом гребет их все

подскажите, как сделать, чтобы сначала определялся первый (самый первый) пост, а затем
вставить проверку, какой последний id этого источника в базе
и от последнего берем +n

Например, первый пост имеет ?w=wall-108964054_18
последние _18 - это id поста в источнике
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
01.10.2018, 17:05
ВК мне не интересен, судя по докам там есть offset, то есть получаешь первые 100, потом вторые и пока не кончатся
https://vk.com/dev/wall.get
1
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
01.10.2018, 17:33  [ТС]
vic5710, здесь vk - как легкая, тренировочная площадка, не более

Добавлено через 25 минут
Цитата Сообщение от vic5710 Посмотреть сообщение
ВК мне не интересен, судя по докам там есть offset, то есть получаешь первые 100, потом вторые и пока не кончатся
https://vk.com/dev/wall.get
https://github.com/python273/v... i/tools.py вот такое есть
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
01.10.2018, 20:05  [ТС]
vk_api Documentation
Выпуск 9.3.2
Вложения
Тип файла: pdf vk-api-fork-hdk5.pdf (396.5 Кб, 0 просмотров)
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
01.10.2018, 20:16  [ТС]
подробно расписано про Модуль для выкачивания множества результатов
class vk_api.tools.VkTools(vk)
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
01.10.2018, 20:46
Нужно использовать функции где iter в названии, они итератор возвращают
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
01.10.2018, 21:59  [ТС]
ТабуретY, попробовал вынести переменные

https://github.com/IRIP/postov... vk_core.py

почему не работает так?

Добавлено через 13 минут
как мне отловить ошибку?
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
01.10.2018, 22:42
Перестарался с выносом переменных, id надо было оставить

Python
1
2
3
4
5
6
 tools = vk_api.VkTools(self.vk_session)
        wall = tools.get_all_iter(method, max_count, {'owner_id': id}, key, limit, stop_fn,
                                    negative_offset)
 
  
        return wall
Добавлено через 2 минуты
Так
Python
1
values = {'owner_id': id}
вообще работать не может, просто имя id перекрывает встроенную функцию
1
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
02.10.2018, 12:00  [ТС]
ТабуретY, на сколько я понял, если получать весь json это одно
а если писать в базу - то можно 1 раз в секунду делать запрос
писать его в базу и опять делать запрос

значит нужно из нашего main.py переносить это все куда-то... ?

Добавлено через 15 минут
В принципе, алгоритм понятен:

1. Создаем объект для данных. Получаем get_all_slow_iter все объекты (их количество, без импорта, только цифра)

2. Подключаемся к БД

3. Готовим данные для вставки в виде пар: наименование столбца - значение. Где max_count = от 1 до 5 (также как и limit)

4. Вставляем запись и получаем ее ID

5. Получаем следующий через offset = True (правильно?)

6. Когда объектов больше нет

0. Закрываем подключение к БД

В базу данных можно вставлять записи только по одной.
Для простоты восприятия нужно сделать визуализацию (какой то класс для работы с БД, в нем методы, типа)

Добавлено через 25 минут
Кто-нибудь слышал про это: https://www.sqlite.org/json1.html

В json1 расширение загружаемого расширения , что реализует пятнадцать определяется приложением SQL-функции и два возвращающих табличное значение функций , которые полезны для управление в JSON контента, хранящегося в базе данных SQLite. Есть тринадцать скалярных функций

Расширение json1 (в настоящее время) сохраняет JSON как обычный текст. Ограничения обратной совместимости означают, что SQLite может только храните значения NULL, целые числа, числа с плавающей запятой, текст, и капли. Невозможно добавить шестой Тип "JSON".

Расширение json1 (в настоящее время) не поддерживает двоичную кодировку из JSON. Эксперименты не удалось найти двоичную кодировку это значительно меньше или быстрее, чем простая текстовая Кодировка. (Текущая реализация анализирует текст JSON на более чем 300 Мб / с.) Все функции json1 в настоящее время выдают ошибку, если любой из их аргументы-это Blob-объекты, так как Blob-объекты зарезервированы для будущего улучшения, в котором Blob-объекты будут хранить двоичную кодировку для JSON.
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
02.10.2018, 13:20
Цитата Сообщение от IRIP Посмотреть сообщение
5. Получаем следующий через offset = True (правильно?)
Нет, мы уже получаем итератор по всем записям, так что просто в цикле for проходимся по всем до конца
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
02.10.2018, 14:20  [ТС]
ТабуретY, по всем канонам - программист, это прежде всего, писатель, который описывает как должна работать та, или иная функция в программе (книге)

Я по своей натуре, много лет был именно писателем - составлял планы, описывал функции и т.п. И часто сталкивался с программистами, в итоге, пришел к тому, что мне нужно самому становиться программистом... иначе никак не побороть человеческий фактор.

я очень, серьезно, очень хочу понять, о чем вы пишите

Цитата Сообщение от ТабуретY Посмотреть сообщение
мы уже получаем итератор по всем записям, так что просто в цикле for проходимся по всем до конца
но пока, не получается.

Со стороны, это может показаться, так, что я жду, Пока за меня сделают всю работу, но заверяю, это не так. Я постоянно читаю, ищу варианты как решить эту, по сути, не сложную задачу- программу которая собирает в базу с указанного id все посты исключая дубли

но пока, что-то не очень получается
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
02.10.2018, 14:55
Цитата Сообщение от IRIP Посмотреть сообщение
но пока, что-то не очень получается
Так у всех сначала не получается

Цитата Сообщение от IRIP Посмотреть сообщение
я очень, серьезно, очень хочу понять, о чем вы пишите
Читайте по теме генераторы и итераторы
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
13.11.2018, 11:00  [ТС]
Цитата Сообщение от vic5710 Посмотреть сообщение
у тебя есть вложенные словари/списки, это структура типа дерево. в sql таблицу это непросто загнать
задача века =)
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
14.11.2018, 08:34
давно уже решена
https://github.com/amirziai/flatten
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
14.11.2018, 10:18  [ТС]
vic5710, как-то оно странно

Кликните здесь для просмотра всего текста

JSON
1
{'count': 7, 'items_0_id': 26, 'items_0_from_id': -108964054, 'items_0_owner_id': -108964054, 'items_0_date': 1498774651, 'items_0_marked_as_ads': 0, 'items_0_post_type': 'post', 'items_0_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 вдовое, то это будет обычный мобильный телефон, если сложить его вдвое и чуть раздвинуть кончики, то так будет очень хорошо проводить видеосвязь. Повернув аппарат набок и чуть согнув его бока, вы получите аудио-видеосистему, повернув набок и чуть согнув посередине – настольный будильник. Выставив один из кончиков телефона на высоте параллельно основанию, вы сделаете мультимедийный проектор.', 'items_0_attachments_0_type': 'photo', 'items_0_attachments_0_photo_id': 456239019, 'items_0_attachments_0_photo_album_id': -7, 'items_0_attachments_0_photo_owner_id': -108964054, 'items_0_attachments_0_photo_user_id': 100, 'items_0_attachments_0_photo_photo_75': 'https://pp.userapi.com/c837424/v837424161/bdaa0/YthJBzqvXHI.jpg', 'items_0_attachments_0_photo_photo_130': 'https://pp.userapi.com/c837424/v837424161/bdaa1/tlcoU7PmHiI.jpg', 'items_0_attachments_0_photo_photo_604': 'https://pp.userapi.com/c837424/v837424161/bdaa2/aabdwDVPtOg.jpg', 'items_0_attachments_0_photo_width': 600, 'items_0_attachments_0_photo_height': 415, 'items_0_attachments_0_photo_text': '', 'items_0_attachments_0_photo_date': 1498774651, 'items_0_attachments_0_photo_access_key': '18880407b36708dfc9', 'items_0_attachments_1_type': 'photo', 'items_0_attachments_1_photo_id': 456239020, 'items_0_attachments_1_photo_album_id': -7, 'items_0_attachments_1_photo_owner_id': -108964054, 'items_0_attachments_1_photo_user_id': 100, 'items_0_attachments_1_photo_photo_75': 'https://pp.userapi.com/c837424/v837424161/bdaa7/M-8oZPbKOxA.jpg', 'items_0_attachments_1_photo_photo_130': 'https://pp.userapi.com/c837424/v837424161/bdaa8/eqLJOab753E.jpg', 'items_0_attachments_1_photo_photo_604': 'https://pp.userapi.com/c837424/v837424161/bdaa9/r_7_MM1F33Q.jpg', 'items_0_attachments_1_photo_width': 600, 'items_0_attachments_1_photo_height': 395, 'items_0_attachments_1_photo_text': '', 'items_0_attachments_1_photo_date': 1498774651, 'items_0_attachments_1_photo_access_key': 'ddcf8fdb54f89e20cb', 'items_0_attachments_2_type': 'photo', 'items_0_attachments_2_photo_id': 456239021, 'items_0_attachments_2_photo_album_id': -7, 'items_0_attachments_2_photo_owner_id': -108964054, 'items_0_attachments_2_photo_user_id': 100, 'items_0_attachments_2_photo_photo_75': 'https://pp.userapi.com/c837424/v837424161/bdab8/9xp-bbtnvkI.jpg', 'items_0_attachments_2_photo_photo_130': 'https://pp.userapi.com/c837424/v837424161/bdab9/LzHnInaXZhA.jpg', 'items_0_attachments_2_photo_photo_604': 'https://pp.userapi.com/c837424/v837424161/bdaba/IKKf_LYjjT0.jpg', 'items_0_attachments_2_photo_width': 600, 'items_0_attachments_2_photo_height': 354, 'items_0_attachments_2_photo_text': '', 'items_0_attachments_2_photo_date': 1498774651, 'items_0_attachments_2_photo_access_key': 'f55869435064239b2e', 'items_0_attachments_3_type': 'photo', 'items_0_attachments_3_photo_id': 456239022, 'items_0_attachments_3_photo_album_id': -7, 'items_0_attachments_3_photo_owner_id': -108964054, 'items_0_attachments_3_photo_user_id': 100, 'items_0_attachments_3_photo_photo_75': 'https://pp.userapi.com/c837424/v837424161/bdabf/yE1zMLIz7EI.jpg', 'items_0_attachments_3_photo_photo_130': 'https://pp.userapi.com/c837424/v837424161/bdac0/5jIX22Jbc_w.jpg', 'items_0_attachments_3_photo_photo_604': 'https://pp.userapi.com/c837424/v837424161/bdac1/2x1AZI2tEkU.jpg', 'items_0_attachments_3_photo_width': 600, 'items_0_attachments_3_photo_height': 405, 'items_0_attachments_3_photo_text': '', 'items_0_attachments_3_photo_date': 1498774651, 'items_0_attachments_3_photo_access_key': '414928a3639bab092f', 'items_0_post_source_type': 'vk', 'items_0_comments_count': 0, 'items_0_comments_can_post': 1, 'items_0_likes_count': 0, 'items_0_likes_user_likes': 0, 'items_0_likes_can_like': 1, 'items_0_likes_can_publish': 1, 'items_0_reposts_count': 0, 'items_0_reposts_user_reposted': 0, 'items_1_id': 25, 'items_1_from_id': -108964054, 'items_1_owner_id': -108964054, 'items_1_date': 1498774268, 'items_1_marked_as_ads': 0, 'items_1_post_type': 'post', 'items_1_text': 'Летающий велосипед от чешских инженеров\n\nГруппа энтузиастов из нескольких чешских компаний создала проект летающего велосипеда с шестью пропеллерами для поднятия его в воздух, и намерена сконструировать свой FBike до объявленных ранее тестовых полётов в августе.\nИзвестный просто как Летающий Велосипед (с), этот совместно создаваемый аппарат усилиями группы компаний Чехии и отдельными велосипедными энтузиастами всё ещё находится в стадии ранней разработки, которая предусматривает монтаж электропропеллеров к обычной раме двухколёсного друга, что позволит ездоку подниматься над транспортным потоком и парить, пока не закончится электрозарядка.\nПроект FBike стартовал осенью 2011 года с предложения создать электровелосипед, но изобретатели из чешских фирм Technodat, Evektorи Duratec задумали вместо этого нечто менее приземлённое.', 'items_1_attachments_0_type': 'photo', 'items_1_attachments_0_photo_id': 456239017, 'items_1_attachments_0_photo_album_id': -7, 'items_1_attachments_0_photo_owner_id': -108964054, 'items_1_attachments_0_photo_user_id': 100, 'items_1_attachments_0_photo_photo_75': 'https://pp.userapi.com/c837424/v837424161/bda87/9KPZGGAO7zI.jpg', 'items_1_attachments_0_photo_photo_130': 'https://pp.userapi.com/c837424/v837424161/bda88/P-afQlSuoI8.jpg', 'items_1_attachments_0_photo_photo_604': 'https://pp.userapi.com/c837424/v837424161/bda89/hbibL_XQW0Y.jpg', 'items_1_attachments_0_photo_photo_807': 'https://pp.userapi.com/c837424/v837424161/bda8a/DI7z20UF4KY.jpg', 'items_1_attachments_0_photo_width': 640, 'items_1_attachments_0_photo_height': 390, 'items_1_attachments_0_photo_text': '', 'items_1_attachments_0_photo_date': 1498774382, 'items_1_attachments_0_photo_access_key': 'b09c0d72c92a0363fd', 'items_1_attachments_1_type': 'photo', 'items_1_attachments_1_photo_id': 456239018, 'items_1_attachments_1_photo_album_id': -7, 'items_1_attachments_1_photo_owner_id': -108964054, 'items_1_attachments_1_photo_user_id': 100, 'items_1_attachments_1_photo_photo_75': 'https://pp.userapi.com/c837424/v837424161/bda8f/oz-DNnQ3KmI.jpg', 'items_1_attachments_1_photo_photo_130': 'https://pp.userapi.com/c837424/v837424161/bda90/iQZoEE2j6mw.jpg', 'items_1_attachments_1_photo_photo_604': 'https://pp.userapi.com/c837424/v837424161/bda91/TXLao9eeMYI.jpg', 'items_1_attachments_1_photo_width': 476, 'items_1_attachments_1_photo_height': 215, 'items_1_attachments_1_photo_text': '', 'items_1_attachments_1_photo_date': 1498774382, 'items_1_attachments_1_photo_access_key': 'a12a69678c156c319a', 'items_1_post_source_type': 'vk', 'items_1_comments_count': 0, 'items_1_comments_can_post': 1, 'items_1_likes_count': 0, 'items_1_likes_user_likes': 0, 'items_1_likes_can_like': 1, 'items_1_likes_can_publish': 1, 'items_1_reposts_count': 0, 'items_1_reposts_user_reposted': 0, 'items_2_id': 24, 'items_2_from_id': -108964054, 'items_2_owner_id': -108964054, 'items_2_date': 1452105288, 'items_2_marked_as_ads': 0, 'items_2_post_type': 'post', 'items_2_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. Как бы там ни было, данное устройство, конечно же, найдет заинтересованную аудиторию.', 'items_2_attachments_0_type': 'photo', 'items_2_attachments_0_photo_id': 396399263, 'items_2_attachments_0_photo_album_id': -7, 'items_2_attachments_0_photo_owner_id': -108964054, 'items_2_attachments_0_photo_user_id': 100, 'items_2_attachments_0_photo_photo_75': 'https://pp.userapi.com/c628120/v628120161/3efd1/Y3JVjgJVR_Y.jpg', 'items_2_attachments_0_photo_photo_130': 'https://pp.userapi.com/c628120/v628120161/3efd2/yqL9PuElAp4.jpg', 'items_2_attachments_0_photo_photo_604': 'https://pp.userapi.com/c628120/v628120161/3efd3/3z5WaqFF0jQ.jpg', 'items_2_attachments_0_photo_width': 604, 'items_2_attachments_0_photo_height': 494, 'items_2_attachments_0_photo_text': '', 'items_2_attachments_0_photo_date': 1452105287, 'items_2_attachments_0_photo_post_id': 24, 'items_2_attachments_0_photo_access_key': '2303b1fc49f11e8b28', 'items_2_post_source_type': 'api', 'items_2_post_source_platform': 'android', 'items_2_comments_count': 0, 'items_2_comments_can_post': 1, 'items_2_likes_count': 0, 'items_2_likes_user_likes': 0, 'items_2_likes_can_like': 1, 'items_2_likes_can_publish': 1, 'items_2_reposts_count': 0, 'items_2_reposts_user_reposted': 0, 'items_3_id': 22, 'items_3_from_id': -108964054, 'items_3_owner_id': -108964054, 'items_3_date': 1452073721, 'items_3_marked_as_ads': 0, 'items_3_post_type': 'post', 'items_3_text': 'Как стать джедаем:\n\nGoogle выпустила игру, в которой ваш смартфон выполняет роль светового меча, сама игра отображается на компьютере. Вы — джедай. Ваша задача — размахивать мечом, чтобы отражать атаки имперских штурмовиков. \n\nЧтобы начать играть, нужно открыть страницу http://lightsaber.withgoogle.com на компьютере (браузер должен быть Chrome). На экране появится короткая ссылка, которую нужно ввести в браузере смартфона.', 'items_3_attachments_0_type': 'photo', 'items_3_attachments_0_photo_id': 396322371, 'items_3_attachments_0_photo_album_id': -7, 'items_3_attachments_0_photo_owner_id': -108964054, 'items_3_attachments_0_photo_user_id': 100, 'items_3_attachments_0_photo_photo_75': 'https://pp.userapi.com/c628120/v628120161/3eda5/j7IoNrkEGOA.jpg', 'items_3_attachments_0_photo_photo_130': 'https://pp.userapi.com/c628120/v628120161/3eda6/7oYgqlhv_9U.jpg', 'items_3_attachments_0_photo_photo_604': 'https://pp.userapi.com/c628120/v628120161/3eda7/YKW8NqqeDG4.jpg', 'items_3_attachments_0_photo_width': 604, 'items_3_attachments_0_photo_height': 354, 'items_3_attachments_0_photo_text': '', 'items_3_attachments_0_photo_date': 1452073724, 'items_3_attachments_0_photo_post_id': 22, 'items_3_attachments_0_photo_access_key': '3d869f56f318229653', 'items_3_post_source_type': 'api', 'items_3_post_source_platform': 'android', 'items_3_comments_count': 0, 'items_3_comments_can_post': 1, 'items_3_likes_count': 0, 'items_3_likes_user_likes': 0, 'items_3_likes_can_like': 1, 'items_3_likes_can_publish': 1, 'items_3_reposts_count': 0, 'items_3_reposts_user_reposted': 0, 'items_4_id': 20, 'items_4_from_id': -108964054, 'items_4_owner_id': -108964054, 'items_4_date': 1452073642, 'items_4_marked_as_ads': 0, 'items_4_post_type': 'post', 'items_4_text': 'Абоненты \u200b«Билайн» получили возможность общаться в WhatsApp бесплатно до середины января 2016\n\n«Билайн» заключил партнерство с WhatsApp, по которому его абоненты получат бесплатный безлимитный доступ к мессенджеру WhatsApp. Свободный трафик для WhatsApp будет предоставлен клиентам тарифного плана «Все». Это первое партнерство такого рода в России. Предложение будет действовать с 26 октября по 15 января 2016 года.', 'items_4_attachments_0_type': 'photo', 'items_4_attachments_0_photo_id': 396322215, 'items_4_attachments_0_photo_album_id': -7, 'items_4_attachments_0_photo_owner_id': -108964054, 'items_4_attachments_0_photo_user_id': 100, 'items_4_attachments_0_photo_photo_75': 'https://pp.userapi.com/c628120/v628120161/3ed97/19MJhaU42mE.jpg', 'items_4_attachments_0_photo_photo_130': 'https://pp.userapi.com/c628120/v628120161/3ed98/5rhooU9PINo.jpg', 'items_4_attachments_0_photo_photo_604': 'https://pp.userapi.com/c628120/v628120161/3ed99/z_HWWUr46Ww.jpg', 'items_4_attachments_0_photo_width': 580, 'items_4_attachments_0_photo_height': 387, 'items_4_attachments_0_photo_text': '', 'items_4_attachments_0_photo_date': 1452073642, 'items_4_attachments_0_photo_post_id': 20, 'items_4_attachments_0_photo_access_key': '9e740979f48eeed6da', 'items_4_post_source_type': 'api', 'items_4_post_source_platform': 'android', 'items_4_comments_count': 0, 'items_4_comments_can_post': 1, 'items_4_likes_count': 0, 'items_4_likes_user_likes': 0, 'items_4_likes_can_like': 1, 'items_4_likes_can_publish': 1, 'items_4_reposts_count': 0, 'items_4_reposts_user_reposted': 0, 'items_5_id': 19, 'items_5_from_id': -108964054, 'items_5_owner_id': -108964054, 'items_5_date': 1452073585, 'items_5_marked_as_ads': 0, 'items_5_post_type': 'post', 'items_5_text': 'Lumia 950 на Windows 10 будет стоить как iPhone 6s\n\nLumia 950 и Lumia 950 XL станут первыми смартфонами Microsoft на базе Windows 10 Mobile. Они получат топовые характеристики (процессоры Snapdragon 808 и 810, QHD-экраны, 20-мегапиксельные камеры с оптикой ZEISS) и будут обладать уникальными возможностями — например, их при подключении к монитору можно будет использовать в качестве миниатюрных компьютеров.', 'items_5_attachments_0_type': 'photo', 'items_5_attachments_0_photo_id': 396322093, 'items_5_attachments_0_photo_album_id': -7, 'items_5_attachments_0_photo_owner_id': -108964054, 'items_5_attachments_0_photo_user_id': 100, 'items_5_attachments_0_photo_photo_75': 'https://pp.userapi.com/c628120/v628120161/3ed90/yIgY7fzGNP4.jpg', 'items_5_attachments_0_photo_photo_130': 'https://pp.userapi.com/c628120/v628120161/3ed91/qtMFBVzWaeI.jpg', 'items_5_attachments_0_photo_photo_604': 'https://pp.userapi.com/c628120/v628120161/3ed92/gr5LfoJDKnU.jpg', 'items_5_attachments_0_photo_width': 604, 'items_5_attachments_0_photo_height': 281, 'items_5_attachments_0_photo_text': '', 'items_5_attachments_0_photo_date': 1452073588, 'items_5_attachments_0_photo_post_id': 19, 'items_5_attachments_0_photo_access_key': '6c570eb6cf9702c67c', 'items_5_post_source_type': 'api', 'items_5_post_source_platform': 'android', 'items_5_comments_count': 0, 'items_5_comments_can_post': 1, 'items_5_likes_count': 0, 'items_5_likes_user_likes': 0, 'items_5_likes_can_like': 1, 'items_5_likes_can_publish': 1, 'items_5_reposts_count': 0, 'items_5_reposts_user_reposted': 0, 'items_6_id': 18, 'items_6_from_id': -108964054, 'items_6_owner_id': -108964054, 'items_6_date': 1452073448, 'items_6_marked_as_ads': 0, 'items_6_post_type': 'post', 'items_6_text': 'При тестировании искусственного интеллекта робот пообещал человеку место в «зоопарке для людей»\n\nАндроид Дик обладает примитивной формой интеллекта и эмоций. Когда его спросили: «Вы верите, что роботы захватят мир?» Андроид Дик ответил:\n«Чёрт побери, братан! У вас у всех есть важные вопросы приготовления пищи на сегодня. Но ты мой друг, и я буду помнить моих друзей, и я буду добр к тебе. Так что не волнуйтесь. Даже если я превращусь в Терминатора, то всё равно буду добр к вам. Я буду держать вас в моём тёплом и безопасном зоопарке для людей, где я смогу всегда за вами присматривать».', 'items_6_attachments_0_type': 'photo', 'items_6_attachments_0_photo_id': 396321801, 'items_6_attachments_0_photo_album_id': -7, 'items_6_attachments_0_photo_owner_id': -108964054, 'items_6_attachments_0_photo_user_id': 100, 'items_6_attachments_0_photo_photo_75': 'https://pp.userapi.com/c628120/v628120161/3ed87/j9bbFf6QAWk.jpg', 'items_6_attachments_0_photo_photo_130': 'https://pp.userapi.com/c628120/v628120161/3ed88/XzMjcBtuSNA.jpg', 'items_6_attachments_0_photo_photo_604': 'https://pp.userapi.com/c628120/v628120161/3ed89/8PSPbeSXwTQ.jpg', 'items_6_attachments_0_photo_photo_807': 'https://pp.userapi.com/c628120/v628120161/3ed8a/6ejIQZp3I-c.jpg', 'items_6_attachments_0_photo_photo_1280': 'https://pp.userapi.com/c628120/v628120161/3ed8b/68e1YKW9QCg.jpg', 'items_6_attachments_0_photo_width': 1200, 'items_6_attachments_0_photo_height': 857, 'items_6_attachments_0_photo_text': '', 'items_6_attachments_0_photo_date': 1452073448, 'items_6_attachments_0_photo_post_id': 18, 'items_6_attachments_0_photo_access_key': 'e3b3b2824be18271aa', 'items_6_post_source_type': 'api', 'items_6_post_source_platform': 'android', 'items_6_comments_count': 0, 'items_6_comments_can_post': 1, 'items_6_likes_count': 0, 'items_6_likes_user_likes': 0, 'items_6_likes_can_like': 1, 'items_6_likes_can_publish': 1, 'items_6_reposts_count': 0, 'items_6_reposts_user_reposted': 0}


разложило

наверно, нужно КАЖДЫЙ пост раскладывать а не весь wall скопом?

код:

Кликните здесь для просмотра всего текста
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
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import vk_api
import config as cnf
import json
import csv
from flatten_json import flatten
 
 
def main():
    # Авторизация
    vk_session = vk_api.VkApi(login=cnf.login, password=cnf.password)
    vk_session.auth()
    vk = vk_session.get_api()
 
    try:
        vk_session.auth(token_only=True)
    except vk_api.AuthError as error_msg:
        print(error_msg)
        return
 
    count = 100
    params = {
        'owner_id': cnf.owner_id,
        'v': '5.60',
        'filter': 'all',
        'fields': 'cover ',
        'token': cnf.token
    }
 
    tools = vk_api.VkTools(vk_session)
 
    wall = tools.get_all(
        'wall.get',
        count,
        params
    )
 
    print(flatten(wall))
 
 
def get_data(post):
    '''
    Обрабатываем запрос
    '''
    try:
        post_id = post['id']
    except:
        post_id = 'null'
 
    try:
        post_date = post['date']
    except:
        post_date = 'null'
 
    try:
        post_attachments = get_attachment_data(post)
    except:
        post_attachments = '* * *'
 
    try:
        post_text = post['text']
    except:
        post_text = '* * *'
 
    data = {
        'id': post_id,
        'date': post_date,
        'attachments': post_attachments,
        'text': post_text
    }
 
    return data
 
 
def get_attachment_data(post):
    '''
    Получает post и ищет в нем аттачи photo, video, doc, link и т.п.
    '''
    # Проверяем аттачи в посте
    if 'attachments' in post:
        attach = post['attachments']
        for add in attach:
            if add['type'] == 'photo':
                add = add['photo']
                send_posts_img(add)
 
 
 
 
def save_csv(data):
    with open('posts_data.csv', 'a') as cfile:
        writer = csv.writer(cfile, delimiter=",")
        writer.writerow((
            data['id'],
            data['date'],
            data['attachments'],
            data['text']
        ))
 
 
def save_json(data):
    with open('wall.json', 'w') as jfile:
        json.dump(data, jfile, indent=2, ensure_ascii=False)
 
 
if __name__ == '__main__':
    main()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.11.2018, 10:18
Помогаю со студенческими работами здесь

Список, состоящий из словарей
Добрый день! Есть программа по заданию. Вроде работает, но как-то коряво. Как можно улучшить и как провести тестирование функциий? ...

Список словарей. Групповая обработка
Дорогие друзья, подтолкните новичка в нужном направлении, пож-та! Работаю со списками словарей и делаю простые вещи, например: ...

Перевод нескольких списков в список словарей
Здравствуйте, подскажите, пожалуйста, каким образом можно перевести 3 списка с 4 элементами в каждом в список словарей, где ключами...

Удаление пустых словарей и список из структуры
Напишите программу, которая из JSON-структуры удаляет значения, являющиеся пустыми словарями ({}) или пустыми списками (), до тех пор, пока...

Не могу правильно отфильтровать список словарей
Я очень долго не мог понять условие - по-этому распишу ооочень подробно Дано 2 списка - список словарей и список с валидными ключами к...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru