Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 21, 2014 15:28:14

ser25630
Зарегистрирован: 2014-04-19
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

VK API

Представляю вам мой “костыль”, скрипт работает, но время его выполнения по приблизительным расчетам дней 15, с учетом, что он проходится по всей базе, есть ли какие-нибудь идеи по ускорению работы скрипта или же упрощению, также столкнулся с одним неприятным моментом, по идее метод user.get позволяет получить 1000 записей, но если в цикле брать по 1000, после тысячи 6 выпадает bad request, ошибка связана с неверным запросом, но не понятно, где ошибка, ведь предыдущие 5000 ошибки не было, возможно, это связано с количеством обращений к серверу, можно выполнять 5 обращений в секунду, возможно не прав, заранее благодарен за помощь

from BeautifulSoup import BeautifulSoup
import re
import urllib2
import csv
for i in range(503619):
 o=1+500*i
 p=500+500*i
 c=range(o,p)
 q=str(c).replace(" ", "")
 c=q.replace("[","")
 q=c.replace("]","")
 link="https://api.vk.com/method/users.get.xml?uids="+str(q)+"&fields=sex,bdate,city,country,has_mobile,education,status,last_seen,schools,relation,relatives"
 page=urllib2.urlopen(link)
 s=BeautifulSoup(page)
 for n in range(250):
  soup=s.response.contents[2*n+1]
  try:
   k=soup.find('city')
   city=int(soup.find('city').string)
   if city==153 or city==37 or city==168 or city==30 or city==70:
    uid="Unknown"
    last_name="Unknown"
    first_name="Unknown"
    sex="Unknown"
    bdate="Unknown"
    city="Unknown"
    country="Unknown"
    has_mobile="Unknown"
    university_name="Unknown"
    name="Unknown"
    status="Unknown"
    time="Unknown"
    relation="Unknown"
    relatives="Unknown"
    try:
     uid=soup.find('uid').string
    except:
     uid="Unknown"
    try:
     first_name=soup.find('first_name').string
    except:
     first_name="Unknown"
    try:
     last_name=soup.find('last_name').string
    except:
     last_name="Unknown"
    try:
     sex=soup.find('sex').string
    except:
     sex="Unknown"
    try:
     bdate=soup.find('bdate').string
    except:
     bdate="Unknown"
    try:
     city=soup.find('city').string
    except:
     city="Unknown"
    try:
     country=soup.find('country').string
    except:
     country="Unknown"
    try:
     has_mobile=soup.find('has_mobile').string
    except:
     has_mobile="Unknown"
    try:
     universities=soup.find('university_name').string
    except:
     universities="Unknown"
    try:
     schools=soup.find('name').string
    except:
     schools="Unknown"
    try:
     status=soup.find('status').string
    except:
     status="Unknown"
    try:
     last_seen=soup.find('time').string
    except:
     last_seen="Unknown"
    try:
     relation=soup.find('relation').string
    except:
     relation="Unknown"
    try:
     relatives=soup.find('relatives').string
     relatives="1"
    except:
     relatives="0"
    writer = csv.writer(open("/Users/roman/Desktop/oj.csv", "a"))
    writer.writerow([uid,first_name,last_name,sex,bdate,city,country,has_mobile,universities,schools,status,last_seen,relation,relatives])
    writer=1
  except:
   print(o)

Офлайн

#2 Апрель 21, 2014 15:34:59

alexsis
Зарегистрирован: 2013-07-26
Сообщения: 148
Репутация: +  9  -
Профиль   Отправить e-mail  

VK API

С вк лучше работать через апи. https://pypi.python.org/pypi/vkontakte/1.3.2

Офлайн

#3 Апрель 21, 2014 15:44:53

ser25630
Зарегистрирован: 2014-04-19
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

VK API

alexsis
С вк лучше работать через апи. https://pypi.python.org/pypi/vkontakte/1.3.2
уже есть такой пакет, но во много ли раз он ускоряет процесс?

Отредактировано ser25630 (Апрель 21, 2014 15:45:09)

Офлайн

#4 Апрель 21, 2014 15:46:29

ser25630
Зарегистрирован: 2014-04-19
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

VK API

alexsis
С вк лучше работать через апи. https://pypi.python.org/pypi/vkontakte/1.3.2
и есть ли идеи по теме выпадающей ошибки, на 1000 записей?

Офлайн

#5 Апрель 21, 2014 17:31:10

alexsis
Зарегистрирован: 2013-07-26
Сообщения: 148
Репутация: +  9  -
Профиль   Отправить e-mail  

VK API

У вас такая ошибка возникает при использовании vk api?

Офлайн

#6 Апрель 21, 2014 23:27:26

ser25630
Зарегистрирован: 2014-04-19
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

VK API

alexsis
У вас такая ошибка возникает при использовании vk api?
При открытии самой ссылки, допустим в i=2100 выпадает такая ошибка

Офлайн

#7 Апрель 22, 2014 02:07:00

ser25630
Зарегистрирован: 2014-04-19
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

VK API

alexsis
https://pypi.python.org/pypi/vkontakte/1.3.2
попробую воспользоваться самим пакетом vkontakte api, если даст должный результат отпишусь

Офлайн

#8 Апрель 22, 2014 02:49:28

ser25630
Зарегистрирован: 2014-04-19
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

VK API

alexsis
У вас такая ошибка возникает при использовании vk api?
спасибо за совет, получаю данные в формате листа, по листу ориентироваться куда проще чем веб ответу, но я периодически получаю ошибку о том, что вышло время ожидания ответа от сервера, интернет несколько слабенький, не подскажите как увеличить это время ожидания?

Офлайн

#9 Апрель 22, 2014 12:56:42

ser25630
Зарегистрирован: 2014-04-19
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

VK API

alexsis
У вас такая ошибка возникает при использовании vk api?
выпадает ошибка the read operation timed out на строке получения профилей, чем меньше профилей запрашиваю, тем менее часто выпадается эта ошибка, я так понимаю, это связано со скоростью моего интернета, но как можно избежать этой ошибки.
import re
import urllib2
import csv
import vkontakte
vko=vkontakte.API(token='atoken')
for i in range(4000,1008000):
 try:
  o=1+250*i
  p=250+250*i
  c=range(o,p)
  q=str(c).replace(" ", "")
  c=q.replace("[","")
  q=c.replace("]","")
  soup=vko.getProfiles(uids=q, fields='sex,bdate,city,country,has_mobile,education,schools,status,last_seen,relation,relatives')

Отредактировано ser25630 (Апрель 23, 2014 01:54:38)

Офлайн

#10 Апрель 22, 2014 15:52:21

alexsis
Зарегистрирован: 2013-07-26
Сообщения: 148
Репутация: +  9  -
Профиль   Отправить e-mail  

VK API

Можно увидеть весь traceback ошибки? Сформулируйте поконкретней вашу задачу.

Отредактировано alexsis (Апрель 22, 2014 15:57:33)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version