Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ###########################################
- #Twitter followers scraper by Scriptomania#
- ###########################################
- # code is available freely, can be reused,
- # forked, used commercially and whatever...
- # no attribution to original author needed
- #
- #
- # Version 1.0
- # Current limitations:
- # - 150 requests per hour (due to API use)
- # - max 5k IDs per user (will be fixed)
- #
- #
- # download the simplejson lib at:
- # http://pypi.python.org/pypi/simplejson/
- import httplib, simplejson, sys, urllib2
- # Get initial set of ids
- oUser = raw_input("Enter a Twitter username to scrape from: ")
- oFileName = raw_input("Enter filename to write to (without extension): ")
- if oUser == "":
- exit()
- if oFileName == "":
- exit()
- print "Getting user ids"
- hOpen = httplib.HTTPSConnection("api.twitter.com")
- hOpen.request("GET", "/1/followers/ids.json?cursor=-1&screen_name=" + oUser)
- hResponse = hOpen.getresponse()
- Buffer = hResponse.read()
- oJsonString = simplejson.loads(Buffer)
- # Define a group
- def group(lst, n):
- for i in range(0, len(lst), n):
- val = lst[i:i+n]
- if len(val) == n:
- yield tuple(val)
- # Take a batch of 100, lookup and save to file
- for followers_list in group(oJsonString['ids'], 100):
- hOpen.request("GET", '/1/users/lookup.json?user_id=%s' % (urllib2.quote(','.join(map(str, followers_list)))))
- try:
- hResponse = hOpen.getresponse()
- Buffer = hResponse.read()
- details_json = simplejson.loads(Buffer)
- f = open(oFileName + ".txt", "a")
- for detail in details_json:
- print detail['screen_name']
- f.write(detail['screen_name'] + "\n")
- f.close()
- except httplib.CannotSendRequest, e:
- pass
- except httplib.BadStatusLine, e:
- pass
- except httplib.HTTPException, e:
- pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement