Skip to content

Instantly share code, notes, and snippets.

@pamplifier
Last active August 29, 2015 14:02
Show Gist options
  • Save pamplifier/a1276b4f9be7927d7f0d to your computer and use it in GitHub Desktop.
Save pamplifier/a1276b4f9be7927d7f0d to your computer and use it in GitHub Desktop.
Meetup.com Group's Members' Names Scraper
from bs4 import BeautifulSoup
import requests
import json
"""
FUNCTION:
scrapeMemberNames
PARAMETERS:
url : str
do not forget quotation marks
Utilize meetup.com's members API to access members database of groups.
Input whatever parameters into API console
group_urlname: PyLadies (unique name in group's URL)
page: 200 (number of entries to include)
only: name (only return member name)
Utilize returned signed URL
RETURNS:
listonames : List of names to traverse through
EXAMPLE:
scrapeMemberNames('http://api.meetup.com/2/members?order=name&group_urlname=
PyLadiesTC&offset=0&format=json&only=name&page=40&sig_id=1
52684422&sig=86764dd082256d269eff311bf15fa8f7e3a865bd')
output: [u'Alison Link',
u'Angie',
u'Anna Mandy', .....]
"""
def scrapeMemberNames(url):
listonames = list() #create empty list; to return
#extract all text from page
rawdata = requests.get(url).text
#put all text into a BeautifulSoup Object
souped = BeautifulSoup(rawdata)
#isolate everything contained in <p></p>
ptag = souped.p.string
#convert json dictionary into python dictionary
diction = json.loads(ptag)
#isolate data stored by 'results' key
ourresults = diction['results']
#loop through 'results' through every 'name' element and append each corresponding datum to list
for name in ourresults:
listonames.append(name['name'])
return listonames
#Example code, lists all members of PyLadies
scrapeMemberNames('http://api.meetup.com/2/members?order=name&group_urlname=PyLadiesTC&offset=0&format=json&only=name&page=40&sig_id=152684422&sig=86764dd082256d269eff311bf15fa8f7e3a865bd')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment