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

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

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

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

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

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

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

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

187
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
15.11.2018, 05:01
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от IRIP Посмотреть сообщение
post.videos.append
post.docs.append
post.attached_link
post.page
post.has_audio
post.has_album
post.has_photos_list
Первые 2 строки добавляют элемент в список, следующие 2 просто сохраняют строку в переменную, последние 3 булевы переменные
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
15.11.2018, 09:40  [ТС]
ТабуретY, сделал так - вроде 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
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
import vk_api
import config as cnf
import json
import csv
import requests
import re
 
params = {
    'owner_id': cnf.owner_id,
    'v': '5.60',
    'filter': 'all',
    'fields': 'cover ',
    'token': cnf.token
}
 
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 = 1
 
    tools = vk_api.VkTools(vk_session)
 
    wall = tools.get_all(
        'wall.get',
        count,
        params
    )
 
    items = wall['items']
    for post in items:
        get_data(post)
 
 
    try:
        save_json(wall)
        print('сохранили в json')
    except:
        print('ошибка сохранения в json')
 
 
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):
 
    if 'attachments' in post:
        list = post['attachments']
 
        photos_list = []
        videos_list = []
        docs_f_list = []
        links_list = []
        pages_list = []
 
        output_attachments_list = [photos_list, videos_list, docs_f_list]
 
        for i in list:
            if i['type'] == 'photo':
                i_photo = i['photo']['id']
                photos_list.append(i_photo)
 
            elif i['type'] == 'video':
                videos_list.append(get_video_link(i['video']))
 
 
            elif i['type'] == 'doc' and i['doc']['size'] < 10**7:
                docs_f_list.append(i['doc']['url'])
 
            elif i['type'] == 'link':
                links_list.append(i['link']['url'])
 
            elif i['type'] == 'page':
                post.page = i['page']['view_url']
 
        print(output_attachments_list)
    return output_attachments_list
 
 
def get_video_link(video):
    '''
    Return video url from VK video object.
    Args:
    video -- VK video object
    '''
    url = ('{}video.get?owner_id={}&videos={}_{}_{}&count=1&extended=0&v=5.80'
            '&access_token={}').format(
                VK_BASE_URL,
                video['owner_id'],
                video['owner_id'],
                video['id'],
                video['access_key'],
                cnf.token
            )
    video_obj = requests.get(url).json()['response']['items'][0]
    video_url = video_obj['player']
 
    try:
        video_platform = video_obj['platform'].lower()
    except KeyError:
        video_url = 'https://vk.com/video{}_{}'.format(video_obj['owner_id'], video_obj['id'])
        return video_url
 
    if video_platform == 'youtube':
        watch_v = re.search(r'\/([^\/]+)\?', video_url).group(1)
        video_url = 'https://www.youtube.com/watch?v=' + watch_v
 
    elif video_platform == 'vimeo':
        vimeo_video_id = re.search(r'\/([^\/]+)\?', video_url).group(1)
        video_url = 'https://vimeo.com/' + vimeo_video_id
 
    return video_url
 
def get_photo_link(photo_id):
    ACCESS_TOKEN = cnf.token
    params = {
        'v': 5.60,
        'access_token': ACCESS_TOKEN,
        'photos': photo_id
    }
    photo = requests.get(
        'https://api.vk.com/method/video.get',
        params
    )
    return video.json()['response']["items"][0]['player']
 
 
def save_photo(photo_id):
    ACCESS_TOKEN = cnf.token
    params = {
        'v': 5.60,
        'access_token': ACCESS_TOKEN,
        'photos': photo_id,
        'photo_sizes': 1
    }
    photo = requests.get(
        'https://api.vk.com/method/photos.getById',
        params
    )
    r = requests.get(
        photo.json()['response'][0]["sizes"][-1]['src'],
    )
 
    with open('img/%s.jpg' % photo.json()['response'][0]["id"], 'wb') as f:
        f.write(r.content)
 
 
def save_doc(doc_id):
    params = {
        'v': API_VERSION,
        'access_token': ACCESS_TOKEN,
        'docs': doc_id
    }
    doc = requests.get(
        'https://api.vk.com/method/docs.getById',
        params
    )
    r = requests.get(
        doc.json()['response'][0]["url"],
    )
    with open('docs/%s.%s' % (doc.json()['response'][0]["title"], doc.json()['response'][0]["ext"]), 'wb') as f:
        f.write(r.content)
 
 
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):
    json_file = 'wall.json'
    with open(json_file, 'w') as jfile:
        json.dump(data, jfile, indent=2, ensure_ascii=False)
 
 
if __name__ == '__main__':
    main()
Добавлено через 52 минуты
ТабуретY, этот код, выдает примерно следующее:


HTML5
1
{'id': 26, 'date': 1498774651, 'attachments': [['https://pp.userapi.com/c837424/v837424161/bdaa2/aabdwDVPtOg.jpg', 'https://pp.userapi.com/c837424/v837424161/bdaa9/r_7_MM1F33Q.jpg', 'https://pp.userapi.com/c837424/v837424161/bdaba/IKKf_LYjjT0.jpg', 'https://pp.userapi.com/c837424/v837424161/bdac1/2x1AZI2tEkU.jpg'], [], []], '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 вдовое, то это будет обычный мобильный телефон, если сложить его вдвое и чуть раздвинуть кончики, то так будет очень хорошо проводить видеосвязь. Повернув аппарат набок и чуть согнув его бока, вы получите аудио-видеосистему, повернув набок и чуть согнув посередине – настольный будильник. Выставив один из кончиков телефона на высоте параллельно основанию, вы сделаете мультимедийный проектор.'}
здесь, нужно обрамить ссылки https://pp.userapi.com/c837424... DVPtOg.jpg - в тек img (чтобы они вставлялись в text

и нужно как-то сделать title
который должен равняться первой строчке text до \n\n символа

в данном примере: Гибкий телефон Samsung Galaxy Skin
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
15.11.2018, 11:12
Цитата Сообщение от IRIP Посмотреть сообщение
нужно обрамить ссылки
Не очень понятно, что значит обрамить, но вот, что получилось

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dct = {'id': 26, 'date': 1498774651, 'attachments': [['https://pp.userapi.com/c837424/v837424161/bdaa2/aabdwDVPtOg.jpg', 'https://pp.userapi.com/c837424/v837424161/bdaa9/r_7_MM1F33Q.jpg', 'https://pp.userapi.com/c837424/v837424161/bdaba/IKKf_LYjjT0.jpg', 'https://pp.userapi.com/c837424/v837424161/bdac1/2x1AZI2tEkU.jpg'], [], []], '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 вдовое, то это будет обычный мобильный телефон, если сложить его вдвое и чуть раздвинуть кончики, то так будет очень хорошо проводить видеосвязь. Повернув аппарат набок и чуть согнув его бока, вы получите аудио-видеосистему, повернув набок и чуть согнув посередине – настольный будильник. Выставив один из кончиков телефона на высоте параллельно основанию, вы сделаете мультимедийный проектор.'}
 
def listmerge(lstlst):
    all=[]
    for lst in lstlst:
      all=all+lst
    return all
 
 
images = [f"<img src={img}>"  for img in listmerge(dct['attachments'])]
 
title = dct['text'].split('\n\n')[0]
 
print(title)
print(*images, sep='\n')
1
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
15.11.2018, 14:01  [ТС]
ТабуретY, вот так получилось добавить [ img ]

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
def get_attachment_data(post):
 
    if 'attachments' in post:
        list = post['attachments']
 
        photos_list = []
        videos_list = []
        docs_f_list = []
        links_list = []
        pages_list = []
 
        output_attachments_list = [photos_list, videos_list, docs_f_list]
 
        for i in list:
            if i['type'] == 'photo':
                i_photo = i['photo']['photo_604']
                processed_image = ('[img]'+i_photo+'[/img]')
                photos_list.append(processed_image)
 
            elif i['type'] == 'video':
                videos_list.append(get_video_link(i['video']))
 
 
            elif i['type'] == 'doc' and i['doc']['size'] < 10**7:
                docs_f_list.append(i['doc']['url'])
 
            elif i['type'] == 'link':
                links_list.append(i['link']['url'])
 
            elif i['type'] == 'page':
                post.page = i['page']['view_url']
 
    return output_attachments_list
но при ответе он все равно получается в виде

Java
1
{'id': 26, 'date': 1498774651, 'title': 'Гибкий телефон Samsung Galaxy Skin', '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': [['https://pp.userapi.com/c837424... DVPtOg.jpg', 'https://pp.userapi.com/c837424... M1F33Q.jpg', 'https://pp.userapi.com/c837424... LYjjT0.jpg', 'https://pp.userapi.com/c837424... I2tEkU.jpg'], [], []]}


идет в примере вырезается тег [ img ]

'[ img ]https://pp.userapi.com/c837424/v837424161/bdac1/2x1AZI2tEkU.jpg[ /img ]'], [], []]}


была вставлена в text и на этом все заканчивалось

Добавлено через 51 минуту
Да, и столкнулся с такой проблемой, что в любом случае нужно скачивать изображения на сервер

ретрансляция не работает =(
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
16.11.2018, 20:38  [ТС]
* * *

Добавлено через 1 минуту
Кликните здесь для просмотра всего текста
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
import vk_api
import config as cnf
import json
import csv
import requests
import re
import MySQLdb
 
params = {
    'owner_id': cnf.owner_id,
    'v': '5.60',
    'filter': 'all',
    'fields': 'cover ',
    'token': cnf.token
}
 
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 = 1
 
    tools = vk_api.VkTools(vk_session)
 
    wall = tools.get_all(
        'wall.get',
        count,
        params
    )
 
    items = wall['items']
    for post in items:
        print(get_data(post))
 
    save_mysql(data)  # сохраняем полученную строку в mysql
 
 
    try:
        save_json(wall)
        print('сохранили в json')
    except:
        print('ошибка сохранения в json')
 
 
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 = '* * *'
 
    try:
        post_title = post_text.split('\n\n')[0]
    except:
        post_title = 'Пост №' + post_id
 
    data = {
        'id': post_id,
        'date': post_date,
        'title': post_title,
        'text': post_text,
        'attachments': post_attachments
    }
 
    return data
 
 
def get_attachment_data(post):
 
    if 'attachments' in post:
        list = post['attachments']
 
        photos_list = []
        videos_list = []
        docs_f_list = []
        links_list = []
        pages_list = []
 
        output_attachments_list = [photos_list, videos_list, docs_f_list]
 
        for i in list:
            if i['type'] == 'photo':
                i_photo = i['photo']['photo_604']
                processed_image = ('[img]'+i_photo+'[/img]')
                photos_list.append(processed_image)
 
            elif i['type'] == 'video':
                videos_list.append(get_video_link(i['video']))
 
 
            elif i['type'] == 'doc' and i['doc']['size'] < 10**7:
                docs_f_list.append(i['doc']['url'])
 
            elif i['type'] == 'link':
                links_list.append(i['link']['url'])
 
            elif i['type'] == 'page':
                post.page = i['page']['view_url']
 
    return output_attachments_list
 
 
def get_video_link(video):
    '''
    Return video url from VK video object.
    Args:
    video -- VK video object
    '''
    url = ('{}video.get?owner_id={}&videos={}_{}_{}&count=1&extended=0&v=5.80'
            '&access_token={}').format(
                VK_BASE_URL,
                video['owner_id'],
                video['owner_id'],
                video['id'],
                video['access_key'],
                cnf.token
            )
    video_obj = requests.get(url).json()['response']['items'][0]
    video_url = video_obj['player']
 
    try:
        video_platform = video_obj['platform'].lower()
    except KeyError:
        video_url = 'https://vk.com/video{}_{}'.format(video_obj['owner_id'], video_obj['id'])
        return video_url
 
    if video_platform == 'youtube':
        watch_v = re.search(r'\/([^\/]+)\?', video_url).group(1)
        video_url = 'https://www.youtube.com/watch?v=' + watch_v
 
    elif video_platform == 'vimeo':
        vimeo_video_id = re.search(r'\/([^\/]+)\?', video_url).group(1)
        video_url = 'https://vimeo.com/' + vimeo_video_id
 
    return video_url
 
def get_photo_link(photo_id):
    ACCESS_TOKEN = cnf.token
    params = {
        'v': 5.60,
        'access_token': ACCESS_TOKEN,
        'photos': photo_id
    }
    photo = requests.get(
        'https://api.vk.com/method/video.get',
        params
    )
    return video.json()['response']["items"][0]['player']
 
 
def get_mysql_time_post():
    '''
    Получаем дату последнего поста (для продолжения)
    дату нужно будет конвертировать в Unix time и выдать системе
    только цифры Unix time последнего поста
    '''
    db = MySQLdb.connect(
    #Открыть соединение с базой данных
        cnf.mysql_host,
        cnf.mysql_user,
        cnf.mysql_pass,
        cnf.mysql_base
    )
 
    cursor = db.cursor()
    #Подготовка объекта cursor с помощью метода cursor()
 
    sql = "SELECT * FROM cms_blog_posts \
        WHERE `user_id` = число `blog_id` = число
        взять нужно `pubdate` у самого большого `id`
        КАК?
 
    try:
        cursor.execute(sql)
        #Выполните команду SQL
        results = cursor.fetchall()
        #Получить все строки
 
        for row in sql:
            здесь нужно выбрать у самого большого id
            дату при условии совпадения user_id * blog_id
 
            #Теперь распечатать полученный результат и передаем его в ответе
            print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
                  (fname, lname, age, sex, income )
    except:
        print "Ошибка: не удается получить данные"
 
    # Отключение от сервера
    db.close()
 
    return post_query_time
 
 
def save_photo(photo_id):
    ACCESS_TOKEN = cnf.token
    params = {
        'v': 5.60,
        'access_token': ACCESS_TOKEN,
        'photos': photo_id,
        'photo_sizes': 1
    }
    photo = requests.get(
        'https://api.vk.com/method/photos.getById',
        params
    )
    r = requests.get(
        photo.json()['response'][0]["sizes"][-1]['src'],
    )
 
    with open('img/%s.jpg' % photo.json()['response'][0]["id"], 'wb') as f:
        f.write(r.content)
 
 
def save_doc(doc_id):
    params = {
        'v': API_VERSION,
        'access_token': ACCESS_TOKEN,
        'docs': doc_id
    }
    doc = requests.get(
        'https://api.vk.com/method/docs.getById',
        params
    )
    r = requests.get(
        doc.json()['response'][0]["url"],
    )
    with open('docs/%s.%s' % (doc.json()['response'][0]["title"], doc.json()['response'][0]["ext"]), 'wb') as f:
        f.write(r.content)
 
 
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):
    json_file = 'wall.json'
    with open(json_file, 'w') as jfile:
        json.dump(data, jfile, indent=2, ensure_ascii=False)
 
 
def save_mysql():
    '''
    сохраняем пост в mysql
    '''
 
    db = MySQLdb.connect(  #Открыть соединение с базой данных
        cnf.mysql_host,
        cnf.mysql_user,
        cnf.mysql_pass,
        cnf.mysql_base
    )
 
    cursor = db.cursor()
    #Подготовка объекта курсора с помощью метода cursor()
 
    cursor = db.cursor()
    #Подготовка объекта cursor с помощью метода cursor()
 
    sql = """INSERT INTO cms_blog_posts(
                id, user_id, cat_id, blog_id, pubdate, title, feel, music, content,
                content_html, allow_who, edit_times, edit_date, published, seolink,
                comments, comments_count, rating, metadesc, hits, pagetitle,
                meta_keys, meta_desc
            )
            VALUES (
 
                ЗДЕСЬ ПЕРЕМЕННЫЕ?!
                данные получаются для полей:
                    user_id
                    blog_id
                    title
                    content_html
 
                    пока не понятно, как генерировать seolink
        )"""
    try:
        cursor.execute(sql)
        #Выполнить команду SQL
 
        db.commit()
        #Зафиксировать изменения в базе данных
    except:
        db.rollback()
        #Откат в случае ошибки
 
    db.close()
    #Отключение от сервера
 
 
if __name__ == '__main__':
    main()



Есть несколько вопросов:

sql = """INSERT INTO cms_blog_posts(
id, user_id, cat_id, blog_id, pubdate, title, feel, music, content,
content_html, allow_who, edit_times, edit_date, published, seolink,
comments, comments_count, rating, metadesc, hits, pagetitle,
meta_keys, meta_desc
)
VALUES (

ЗДЕСЬ ПЕРЕМЕННЫЕ?!
данные получаются для полей:
user_id
blog_id
title
content_html

пока не понятно, как генерировать seolink
)"""


и


cursor = db.cursor()
#Подготовка объекта cursor с помощью метода cursor()

sql = "SELECT * FROM cms_blog_posts \
WHERE `user_id` = число `blog_id` = число
взять нужно `pubdate` у самого большого `id`
КАК?

try:
cursor.execute(sql)
#Выполните команду SQL
results = cursor.fetchall()
#Получить все строки

for row in sql:
здесь нужно выбрать у самого большого id
дату при условии совпадения user_id * blog_id

#Теперь распечатать полученный результат и передаем его в ответе
print "fname=%s,lname=%s,age=%d,sex=%s,income= %d" % \
(fname, lname, age, sex, income )
except:

Добавлено через 10 часов 45 минут
разобрались тут https://www.cyberforum.ru/pyth... 52286.html
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
18.11.2018, 14:21  [ТС]
===================================

В ОБЩЕМ, ПО ФАКТУ - ПОЧТИ ТРЕХМЕСЯЧНЫЕ МЫТАРСТВА В ПОПЫТКАХ ГРАМОТНО НАПИСАТЬ ПАРСЕР - ПРИВЕЛИ К МНЕНИЮ, ЧТО ДЛЯ ЭТОГО ПРОЦЕССА НУЖНО ИСПОЛЬЗОВАТЬ только БИБЛИОТЕКУ requests

* * *

Ничего более не дает такой гибкости в решении поставленной задачи.


По сути, стартовый шаблон выглядит так:

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
import requests
import time
import json
import config as cnf
 
def main():
    count = 2
    offset = 0
 
    while True:
        time.sleep(1)
        r = requests.get(
            'https://api.vk.com/method/wall.get',
            params={
                'owner_id': cnf.owner_id,
                'count': count,
                'offset': offset,
                'access_token': cnf.token,
                'version':5.60
            }
        )
        posts = r.json()['response']
 
 
 
 
if __name__ == '__main__':
    main()
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
19.11.2018, 10:40  [ТС]
Python3 записать данные базу данных - продолжение
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
20.11.2018, 22:56  [ТС]
Как распарсить список словарей? - еще раз акцентирую внимание на этой теме, поскольку она очень важная в понимании всего процесса обработки ответа json
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2018, 22:56

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
188
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru