Форум сайта python.su
Всем привет,
Спасибо за внимание к моему посту, интересно услышать ваши мысли и предложения.
Brief:
Пишу алгоритм для извлечения информации через API ВКонтакте, самый базовый и банальный алгоритм извлечения данных о пользователях работает на ура:
import requests
r=requests.get('https://api.vk.com/method/users.get',params={'user_ids':7979370,'fields':'bdate'})
print(r.json())
import requests
UserID = '3674735, 4196136, 5264403, 9690412'
r=requests.get('https://api.vk.com/method/users.get',params={'user_ids':UserID,'fields':'bdate'})
r.json()
import requests
r=requests.get('https://api.vk.com/method/groups.getMembers',params={'group_id':83388025,'sort':'id_asc'})
print(r.json())
{'response': {'count': 1346, 'users': [255248, 630877, 751755, 903660,....,n]}}
import requests
r=requests.get('https://api.vk.com/method/groups.getMembers',params={'group_id':26270996,'sort':'id_asc'}) #вытянули нужную инфу
response=r.json() #Сложили её в масив
amount=response['response']['count']
print('Всего подписчиков',amount) #Вывели общее кол-во подписчиков
UserID=response['response']['users'] #вытащили отдельно список пользователей
r=requests.get('https://api.vk.com/method/users.get',params={'user_ids':i,'fields':'city'})
print(r.json()) """получили звездюлей по весьма понятным причинам: нельзя переметре user_ids давать значение строки"""
import requests
r=requests.get('https://api.vk.com/method/groups.getMembers',params={'group_id':26270996,'sort':'id_asc'})
response=r.json()
amount=response['response']['count']
print('Всего подписчиков',amount)
UserID=response['response']['users']
for i in UserID: """вместо того что бы подставлять всю строку будем через цикл подставлять каждое значение"""
r=requests.get('https://api.vk.com/method/users.get',params={'user_ids':i,'fields':'city'})
print(r.json())
{'response': [{'last_name': 'Секлер', 'first_name': 'Виолетта', 'hidden': 1, 'uid': 11355, 'city': 1}]}
[255248, 630877, 751755, 903660,....,n]
'255248, 630877, 751755, 903660,....,n'
import requests
r=requests.get('https://api.vk.com/method/groups.getMembers',params={'group_id':26270996,'sort':'id_asc'})
response=r.json()
amount=response['response']['count']
print('Всего подписчиков',amount)
UserID=response['response']['users']
for i in UserID:
r=requests.get('https://api.vk.com/method/users.get',params={'user_ids':i,'fields':'city'})
city=r.json() #при каждом цикле заносим назначаем переменной city словарь
if city['response'][0]['city']==1: #проверяем на соответствие нужной локации
print(city) #выводим значение
{'response': [{'deactivated': 'banned', 'last_name': 'Филимонова', 'first_name': 'Маргарита', 'uid': 179050}]}
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-246-79764f36f327> in <module>()
17 print(r.json())
18 city=r.json()
---> 19 if city['response'][0]['city']==1:
20 print(city)
KeyError: 'city'
Отредактировано platon (Май 7, 2016 18:25:11)
Офлайн
>>> ", ".join(["1", "2", "3"]) '1, 2, 3'
Офлайн
In [1]: lst = ['a', 'b', 'c'] In [2]: ' '.join(lst) Out[2]: 'a b c' In [3]: d = {'key': 'value'} In [4]: d.get('key') Out[4]: 'value' In [5]: d.get('key1')
Офлайн
platon
В Связи с чем возникает вопрос. Можно ли как-то данные из спискаперевести в строку:[255248, 630877, 751755, 903660,....,n]'255248, 630877, 751755, 903660,....,n'
>>> lst = [255248, 630877, 751755, 903660] >>> out = ', '.join(map(str, lst)) >>> out '255248, 630877, 751755, 903660' >>>
Отредактировано py.user.next (Май 8, 2016 03:27:01)
Офлайн
привет, спасибо больщое за ответы!
ayb
ajib6ept
py.user.next
r=requests.get('https://api.vk.com/method/users.get',params={'user_ids':UserID,'fields':'c0ity'})
city=r.json()
print(city)
{'response': [{'deactivated': 'banned', 'last_name': 'Ульянова', 'first_name': 'Юлия', 'uid': 3674735},
{'last_name': 'Щербаков', 'first_name': 'Михаил', 'hidden': 1, 'uid': 4196136, 'city': 4316}]}
m=city.get('response'); print(city)
[{'deactivated': 'banned', 'last_name': 'Ульянова', 'first_name': 'Юлия', 'uid': 3674735}, {'last_name': 'Щербаков', 'first_name': 'Михаил', 'hidden': 1, 'uid': 4196136, 'city': 4316}]
Отредактировано platon (Май 8, 2016 18:10:09)
Офлайн
>>> lst = [{'deactivated': 'banned', 'last_name': 'Ульянова', 'first_name': 'Юлия', 'uid': 3674735}, {'last_name': 'Щербаков', 'first_name': 'Михаил', 'hidden': 1, 'uid': 4196136, 'city': 4316}] >>> filter(lambda u: u.get("deactivated") is None, lst) [{'city': 4316, 'first_name': '\xd0\x9c\xd0\xb8\xd1\x85\xd0\xb0\xd0\xb8\xd0\xbb', 'last_name': '\xd0\xa9\xd0\xb5\xd1\x80\xd0\xb1\xd0\xb0\xd0\xba\xd0\xbe\xd0\xb2', 'hidden': 1, 'uid': 4196136}] /code]
Офлайн
Привет.
Может немного не по теме, увидел что интегрируете свой скрипт / сервис с vk
Хочу порекомендовать использовать https://github.com/prawn-cake/vk-requests библиотеку для работы с API vk. Это позволит очистить код от рутины и сосредоточиться на работе с данными.
Надеюсь кто-то найдет это полезным. Извиняюсь за внимание.
Офлайн