Форум сайта python.su
0
народ помогите.
хочу собрать адреса всех страниц с vk со страницы поиска людей все не могу додумать как сделать так чтоб сначала вытаскивал первые 30 пользователей а потом на шел по ссылке и загружал остальные 30 и так пока не загрузит всех пользователей.
Офлайн
9
Для этих целей, вроде как подходит vk api. Есть библиотека для python vkontakte, для запросов к api.
https://vk.com/pages?oid=-1&p=users.search
Отредактировано alexsis (Март 19, 2014 16:31:13)
Офлайн
0
хотелось бы все сделать без использования 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"""
Офлайн
9
Почему вы избегаете использования api? Это будет намного удобней чем парсинг html.
Офлайн
0
в Api есть ограничение на количество результатов в 1000. и вопрос как мне обрабатывать параметр offset после 1000 результатов
Офлайн
9
S1asH
в Api есть ограничение на количество результатов в 1000. и вопрос как мне обрабатывать параметр offset после 1000 результатов
Офлайн
2
Вам сюда
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)
Офлайн