Представляю вам мой “костыль”, скрипт работает, но время его выполнения по приблизительным расчетам дней 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)