Форум сайта python.su
народ помогите.
хочу собрать адреса всех страниц с vk со страницы поиска людей все не могу додумать как сделать так чтоб сначала вытаскивал первые 30 пользователей а потом на шел по ссылке и загружал остальные 30 и так пока не загрузит всех пользователей.
Офлайн
Для этих целей, вроде как подходит vk api. Есть библиотека для python vkontakte, для запросов к api.
https://vk.com/pages?oid=-1&p=users.search
Отредактировано alexsis (Март 19, 2014 16:31:13)
Офлайн
хотелось бы все сделать без использования API.
думаю надо все это реализовать через цикл, но все не могу додумать как. т.е скрипт должен сначала первых 30 пользователей по ссылке (https://vk.com/search?c%5Bage_from%5D=18&c%5Bcity%5D=1&c%5Bcountry%5D=1&c%5Bname%5D=1&c%5Bphoto%5D=1&c%5Bsection%5D=people) потом по ссылке взятой из more и так пока пользователи не закончатся(не будит значения в more)
вот часть что написал
import mechanize from BeautifulSoup import BeautifulSoup import re import time,datetime br = mechanize.Browser() br.set_handle_equiv(True) br.set_handle_redirect(True) br.set_handle_robots(False) br.open('https://vk.com/') br.select_form(nr=0) br.form['email'] = 'username' br.form['pass'] = 'passwd' br.submit() br.open('https://vk.com/search?c%5Bage_from%5D=18&c%5Bcity%5D=1&c%5Bcountry%5D=1&c%5Bname%5D=1&c%5Bphoto%5D=1&c%5Bsection%5D=people') doc=br.response().read() soup=BeautifulSoup(''.join(doc)) #url = 'https://vk.com/' + soup.findAll(attrs={"class":"simple_fit_item search_item"})[0]['href']#ссылки на страницы #more = 'https://vk.com/' + soup.findAll(attrs={"class": "show_more"})[0]['href']#ссылка на загрузку еще пользователей """тут должен быть код позволяющий загрузить пользователей из vk"""
Офлайн
Почему вы избегаете использования api? Это будет намного удобней чем парсинг html.
Офлайн
в Api есть ограничение на количество результатов в 1000. и вопрос как мне обрабатывать параметр offset после 1000 результатов
Офлайн
S1asH
в Api есть ограничение на количество результатов в 1000. и вопрос как мне обрабатывать параметр offset после 1000 результатов
Офлайн
Вам сюда
https://vk.com/dev/users.search
Алгоритм несложный:
Из ответа на запрос апи берем
response.json()['response']['count']
number_of_cycles = round(count / 1000 + 0.5)
offset = 0 for i in range(number_of_cycles): # Каждый цикл возвращает нам 1000 идентификаторов и мы сохраняем их во временный список items для обхода r = requests.get(url=VK_API_URL, params={'offset': offset, 'count': 1000, 'v': '5.14'}) items = r.json()['response']['items'] # Проходимся по этому списку и делаем все что нам нужно for item in items: doTheMagic(item) # Задаем смещение для следующей тысячи offset += 1000
Отредактировано wiygn (Март 22, 2014 15:06:09)
Офлайн