Guest User

vkparser

a guest
Sep 2nd, 2011
454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.10 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. from re import findall, DOTALL, sub
  4. from cookielib import CookieJar
  5. from urllib import urlencode
  6. import urllib2
  7. import csv
  8.  
  9. def ParseContact(nickname,password,count,limit,filename):
  10.     '''
  11.     nickname - email,
  12.     password - password,
  13.     count - count events(example: 20,30,40,etc.)
  14.     limit - mininmal members in event
  15.     filename - name for saved file(example: events. without ".csv")
  16.     '''
  17.     cookie      = CookieJar()  
  18.     opener      = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
  19.     urllib2.install_opener(opener)
  20.     headers     = {"User-Agent" : "Mozilla/4.0 (compatible; MSIE 5.5; WindowsNT)"}
  21.     data_s      = {"email":nickname, "pass":password}
  22.     send_data   = urlencode(data_s)
  23.     u_request   = urllib2.Request("http://vkontakte.ru/login.php", send_data, headers)
  24.     eventWriter = csv.writer(open('%s.csv' % filename, 'wb'), delimiter='~',  quoting=csv.QUOTE_MINIMAL)
  25.    
  26.     page = urllib2.urlopen(u_request)
  27.     print 'login'
  28.     for num in range(0,count,10):
  29.         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()
  30.         print 'events %s/%s' % (num,count)
  31.         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):
  32.             event_csv = [event[0],event[1],event[2]]
  33.             if int(event[2]) > limit:
  34.                 print '%s: parse start' % event[0]
  35.                 page = urllib2.urlopen(urllib2.Request('http://vkontakte.ru%s' % event[0],send_data, headers)).read()
  36.                 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)):
  37.                     event_csv.append(e[0])
  38.                     event_csv.append(sub(r'<a.*?>*</a>|<span.*?>|</span>','',e[1]))
  39.                 print '%s: parse end' % event[0]
  40.                 eventWriter.writerow(event_csv)
  41.             else:
  42.                 print '%s: passed(>%s members)' % (event[0], limit)
  43.         print 'saved %s events ti: %s.csv' % (num, filename)
  44.        
  45. ParseContact(nickname='email',password='password',count=30,limit=20,filename='evennnt')
Advertisement
Add Comment
Please, Sign In to add comment