Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- from re import findall, DOTALL, sub
- from cookielib import CookieJar
- from urllib import urlencode
- import urllib2
- import csv
- def ParseContact(nickname,password,count,limit,filename):
- '''
- nickname - email,
- password - password,
- count - count events(example: 20,30,40,etc.)
- limit - mininmal members in event
- filename - name for saved file(example: events. without ".csv")
- '''
- cookie = CookieJar()
- opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
- urllib2.install_opener(opener)
- headers = {"User-Agent" : "Mozilla/4.0 (compatible; MSIE 5.5; WindowsNT)"}
- data_s = {"email":nickname, "pass":password}
- send_data = urlencode(data_s)
- u_request = urllib2.Request("http://vkontakte.ru/login.php", send_data, headers)
- eventWriter = csv.writer(open('%s.csv' % filename, 'wb'), delimiter='~', quoting=csv.QUOTE_MINIMAL)
- page = urllib2.urlopen(u_request)
- print 'login'
- for num in range(0,count,10):
- p = urllib2.urlopen(urllib2.Request('http://vkontakte.ru/al_search.php?al=1&c[city]=124&c[country]=1&c[section]=events&offset=%s' % num, send_data, headers)).read()
- print 'events %s/%s' % (num,count)
- for event in findall(r'<div\sclass="labeled"><a\shref="(.*?)".*?>(.*?)</a></div><div\sclass="label">.*?:</div>\n<div\sclass="labeled">(\d+)\s.*?</div>', p, DOTALL):
- event_csv = [event[0],event[1],event[2]]
- if int(event[2]) > limit:
- print '%s: parse start' % event[0]
- page = urllib2.urlopen(urllib2.Request('http://vkontakte.ru%s' % event[0],send_data, headers)).read()
- for e in zip(findall(r'<div class="label fl_l">(.*?)</div>', page, DOTALL),findall(r'<div class="labeled_text fl_l">(.*?)</div>', page, DOTALL)):
- event_csv.append(e[0])
- event_csv.append(sub(r'<a.*?>*</a>|<span.*?>|</span>','',e[1]))
- print '%s: parse end' % event[0]
- eventWriter.writerow(event_csv)
- else:
- print '%s: passed(>%s members)' % (event[0], limit)
- print 'saved %s events ti: %s.csv' % (num, filename)
- ParseContact(nickname='email',password='password',count=30,limit=20,filename='evennnt')
Advertisement
Add Comment
Please, Sign In to add comment