Найти - Пользователи
Полная версия: VK API
Начало » Python для новичков » VK API
1 2
ser25630
Представляю вам мой “костыль”, скрипт работает, но время его выполнения по приблизительным расчетам дней 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)
alexsis
С вк лучше работать через апи. https://pypi.python.org/pypi/vkontakte/1.3.2
ser25630
alexsis
С вк лучше работать через апи. https://pypi.python.org/pypi/vkontakte/1.3.2
уже есть такой пакет, но во много ли раз он ускоряет процесс?
ser25630
alexsis
С вк лучше работать через апи. https://pypi.python.org/pypi/vkontakte/1.3.2
и есть ли идеи по теме выпадающей ошибки, на 1000 записей?
alexsis
У вас такая ошибка возникает при использовании vk api?
ser25630
alexsis
У вас такая ошибка возникает при использовании vk api?
При открытии самой ссылки, допустим в i=2100 выпадает такая ошибка
ser25630
alexsis
https://pypi.python.org/pypi/vkontakte/1.3.2
попробую воспользоваться самим пакетом vkontakte api, если даст должный результат отпишусь
ser25630
alexsis
У вас такая ошибка возникает при использовании vk api?
спасибо за совет, получаю данные в формате листа, по листу ориентироваться куда проще чем веб ответу, но я периодически получаю ошибку о том, что вышло время ожидания ответа от сервера, интернет несколько слабенький, не подскажите как увеличить это время ожидания?
ser25630
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')
alexsis
Можно увидеть весь traceback ошибки? Сформулируйте поконкретней вашу задачу.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB