• Как реализовывать запросы VK API через Python без токена?

    @FireGM
    import urllib
    import urllib2, json, os.path
    
    class Api():
        main_url = 'https://api.vk.com/method/'
    
        def method(self, method, params=None):
            if not params:
                params = {}
            full_url = self.generate_url(method, params)
            return urllib2.urlopen(full_url, timeout=timeout).read()
    
        def generate_url(self, method, params):
            m = self.main_url + method + "?" +urllib.urlencode(params)
            return m
    
    
    api = Api()
    res = api.method('users.get', {"user_ids" : 1, 'fields': "photo_50,city,verified"})
    Ответ написан
    6 комментариев
  • Как работать с таблицами >1кк строк?

    @AndrewFoma
    Лично я Pandas могу использовать, но не использую, или крайне редко.
    С данными, которые по своей форме "как бы таблицы", можно легко работать. Просто какие требования вы предъявляете к методам работы с данными. И 200 MB это кстати мало, можно обойтись списками.
    1. Можно нагородить "велосипедов" через списки и словари. Примитивно, список, где каждая запись это словарь, а ключ - наименования столбца (поле), а дальше как фантазия подскажет
    2. Можно использовать sqlite, создавая базу в памяти или на носителе. Смотря какой python и сколько памяти, а уж от sqlite - sql запросы. Несколько миллионов sqlite легко вывозит.
    Поэтому: "велосипед", sqlite или pandas.
    Ответ написан
    2 комментария
  • Как реализовать подключение по разным прокси через urllib.request.urlopen?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Можно так например:
    import urllib2
    import random
    
    http_proxies = ['http://proxy1.com', 'http://proxy2.com', 'http://proxy3.com', ... ]
    
    need_receive_data = True
    while need_receive_data:
       try:
            random_proxy = random.choice(http_proxies)
            print 'Trying {proxy}'.format(proxy=random_proxy)
            proxy_handler = urllib2.ProxyHandler({'http': random_proxy })
            proxied = urllib2.build_opener(proxy_handler)
            proxied.open('http://какой-то сайт')
        except urllib2.HTTPError, e:
            print 'Error {err}'.format(err=str(e))
        else:
            need_receive_data = False
    print proxied.read()


    написано наспех и не проверено, но смысл, думаю, - ясен
    Ответ написан
    4 комментария
  • Почему Терминал и Sublime Text показывают разный результат работы Python3 в OSX?

    DevMan
    @DevMan
    потому что путь считается относительно текущей директории, которая может быть какой угодно.
    выполните в терминале:
    cd /Users/ilya/Desktop/put/; python -c "import os.path;yout_path = os.path.abspath(os.curdir);print(str(yout_path) + '/')"
    и возрадуйтесь.
    Ответ написан
    Комментировать
  • Как выбрать нужные данные в Pandas?

    в квадратных скобка можно указывать условия касающиеся значений по определённому столбцу, например:

    data = pandas.read_csv('test.csv', delimiter=';')

    print(data[data.a == 0])
    или
    print(data[data.a < 500])

    здесь a - название столбца.
    условий может быть много:
    print(data[data.a < 500][data.b >= 100]) и так далее.

    Или же можно выделить отдельно несколько столбцов, а потом их сшить.
    Ответ написан
    Комментировать
  • Как правильно собрать данные из Instagram API и Foursquare API?

    1. Обходить ограничения на один токен => нужно больше токенов, либо морочишься и регаешь кучу аккаунтов в данных соцсетях, либо вооружаешься поисковиками и ищешь на сайтах аля pastebin, ссылка на поисковик по 100+ таких ресурсов тык тык, там идешь в раздел Documents -> Custom Pastebins (Meta search). Цель - найти исходники чьи то, из которых забыли убрать токены, я однажды около 10 так насобирал, но заранее напиши себе небольшой скрипт чекер токенов, например такой:
    from requests import get
    ig_api_key = 'YOUR INSTAGRAM API KEY'
    answer = get('https://api.instagram.com/v1/users/search?q=facebook' + '&access_token=' + ig_api_key, verify=True).json()
    print answer

    Там соответственно подставляешь токен найденный и смотришь ответ, если все нормально, значит токен рабочий.
    НО: уверен, что в ToS Instagram API такое делать запрещено, поэтому на свой страх и риск.

    2. Как и сказано выше, кури доки и читай про Pagination, вот для примера два метода, которые вытаскивают данные о фотках пользователя (осторожно быдлокод, но для примера хватит).
    def get_data_from_json(json_text):
        answer = list()
        for element in json_text['data']:
            answer.append(element)
        return answer
    
    
    def get_media(username):
        answer = list()
        user_id = get_user_id(username)
        data = get('https://api.instagram.com/v1/users/' + user_id + '/media/recent/?access_token=' +\
                   ig_api_key, verify=True).json()
        try:
            if data[u'meta'][u'code'] == 200:
                if data[u'pagination'] == {}:
                    answer += get_data_from_json(data)
                else:
                    answer += get_data_from_json(data)
                    while True:
                        if data[u'pagination'] != {}:
                            data = get(data[u'pagination'][u'next_url'], verify=True).json()
                            answer += get_data_from_json(data)
                        else:
                            break
            else:
                answer = list()
        except:
            answer = list()
        return answer

    3. Теперь про город, для этого тебе нужно знать его координаты (либо можешь сам это автоматизировать через Google Maps API, там будет адрес -> координаты), далее придумываешь алгоритм по которому из двух координат lat\long будет генериться множество точек для последующего запроса к Instagram API, конкретнее, обратись к вот этому методу, он дает возможность получить данные по координатом на дистанции от 1 до 5 км, значит просто нужно покрыть город кругами с радиусом в 5 км, статья с хабра с похожей тематикой и кодом на питоне вот здесь. Дерзай и удачи!
    Ответ написан
    4 комментария
  • Подходит ли Kali Linux для веб разработчика?

    edinorog
    @edinorog
    Троллей не кормить!
    подходит ли топор для намазывания масла на хлеб? ну да ... только задачи у него слегка другие. для этого ножи вроде есть
    Ответ написан
    2 комментария
  • Как грамотно разложить сплитом строку?

    Если я правильно вас понял, то вам подойдёт обычный сплит
    https://docs.python.org/3.4/library/stdtypes.html#...
    https://docs.python.org/2/library/stdtypes.html#st...
    '40920 8.326976 0.953952 largeDoses'.split()
    If sep is not specified or is None, a different splitting algorithm is applied: runs of consecutive whitespace are regarded as a single separator, and the result will contain no empty strings at the start or end if the string has leading or trailing whitespace. Consequently, splitting an empty string or a string consisting of just whitespace with a None separator returns [].
    Ответ написан
    1 комментарий
  • Как получить токен VK API для Standalone-приложения?

    @Nc_Soft
    Вообще, официально из пхп этим пользоваться нельзя, потому что в стандэлонах юзер сам авторизируется через браузер.
    Но если очень хочется, то можно
    https://oauth.vk.com/authorize?client_id=ВАШ_ИД&scope=offline,group,photos,wall&display=page&response_type=token&redirect_uri=https://oauth.vk.com/blank.html

    нужно перейти на эту страницу авторизованным в вк, и в адресной строке будет ваш access_token
    Ответ написан
    8 комментариев
  • Vk api python без acess_token?

    YardalGedal
    @YardalGedal
    yeah boy
    Либо я неправильно понял вопрос, либо автора действительно хочет обращаться ко всем методам vk api от сервера не используя access_token.
    Ответ написан
    3 комментария