├── ingest ├── __init__.py ├── .gitignore ├── config.ini ├── analyser.py ├── scraper.py ├── web_scraper │ ├── README.md │ ├── fiveminutes.py │ ├── calltoactivism.py │ ├── twohoursaweek.py │ ├── resistancenearme.py │ ├── dailygrabback.py │ ├── risestronger.py │ ├── basewebscraper.py │ └── scraped_data │ │ └── resistancenearme_events_20170831T231018.csv └── listener.py └── README.md /ingest/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ingest/.gitignore: -------------------------------------------------------------------------------- 1 | secrets.ini 2 | -------------------------------------------------------------------------------- /ingest/config.ini: -------------------------------------------------------------------------------- 1 | [Email] 2 | inbox = "INBOX" 3 | provider = imap.gmail.com 4 | data items = (RFC822) 5 | -------------------------------------------------------------------------------- /ingest/analyser.py: -------------------------------------------------------------------------------- 1 | """Module that analyzes different emails. 2 | 3 | The goal is to take raw data as input and identify action items 4 | with date, time, and place. 5 | """ 6 | -------------------------------------------------------------------------------- /ingest/scraper.py: -------------------------------------------------------------------------------- 1 | """Module to scrape data from email and dump in a text file. 2 | """ 3 | 4 | def email_scraper(email): 5 | """This method should consider different types of emails. 6 | """ 7 | pass 8 | 9 | def save_data(raw_data): 10 | """For now we will save everything in a text file. 11 | """ 12 | with open('raw_data.txt', 'w') as file: 13 | file.write(raw_data) 14 | 15 | def scrape(email): 16 | """Scrape email contents and write to file. 17 | """ 18 | raw_data = email_scraper(email) 19 | save_data(raw_data) 20 | -------------------------------------------------------------------------------- /ingest/web_scraper/README.md: -------------------------------------------------------------------------------- 1 | Following websites are currently scraped: 2 | - [Rise Stronger](https://risestronger.org) 3 | - [Call To Activism](http://www.calltoactivism.com) 4 | - [DailyGrabBack](https://www.dailygrabback.com) 5 | - [Five Minutes](https://tinyletter.com/FiveMinutes) 6 | - [Two Hours a Week](http://2hoursaweek.org) 7 | - [Resistance Near Me](https://resistancenearme.org) 8 | 9 | Scrapers for all websites have been implemented as separate sub-classes of BaseWebScraper. 10 | BaseWebScraper (implemented in basewebscraper.py) defines methods common to all sub-classes. 11 | All sub-classes must implement extract_details() and event_urls() methods according to the website they scrape. 12 | To scrape a website, call the scrape() method for the corresponding sub-class. 13 | 14 | All websites except ResistanceNearMe can be scraped by parsing the DOM with [BeautifulSoup](https://www.crummy.com/software/BeautifulSoup/). 15 | ResistanceNearMe uses client-side javascript to load the events from a firebase DB, hence [Selenium](http://docs.seleniumhq.org/) is used for scraping. 16 | -------------------------------------------------------------------------------- /ingest/listener.py: -------------------------------------------------------------------------------- 1 | """ 2 | This module will listen to an email address and call Scraper.scrap once it 3 | received email 4 | """ 5 | 6 | # from Scraper import scrap 7 | from threading import Thread 8 | import imaplib 9 | # from email import parser 10 | # def listen_notification(): 11 | # pass 12 | 13 | 14 | class EmailParser(object): 15 | def __init__(self, host, mailbox, user, password): 16 | self.host = host 17 | self.user = user 18 | self.password = password 19 | self.mailbox = mailbox 20 | 21 | def GetEmails(self, search_filter='UNSEEN', query='(RFC822)', n=None): 22 | try: 23 | conn = imaplib.IMAP4_SSL(self.host) 24 | conn.login(self.user, self.password) 25 | conn.select(self.mailbox) 26 | rv, data = conn.search(None, search_filter) 27 | if rv != 'OK': 28 | # TODO timestamp message, or just implement actual logging... 29 | print('No messages found!\n') 30 | return 31 | labels = data[0].split() 32 | count = len(labels) 33 | n = count if n is None else n 34 | n = min(n, count) 35 | 36 | for num in labels[:n]: 37 | rv, result = conn.fetch(num, query) 38 | if rv != 'OK': 39 | raise RuntimeError('Failed to fetch message {}' 40 | .format(num)) 41 | 42 | seen_rv, seen_data = conn.store(num, '+FLAGS', '\\Seen') 43 | 44 | yield result 45 | finally: 46 | conn.close() 47 | conn.logout() 48 | 49 | 50 | if __name__ == '__main__': 51 | p = EmailParser('imap.gmail.com', 'inbox', 'USERNAME', 'PASSWORD') 52 | for msg in p.GetEmails(): 53 | print(msg) 54 | -------------------------------------------------------------------------------- /ingest/web_scraper/fiveminutes.py: -------------------------------------------------------------------------------- 1 | import logging 2 | from basewebscraper import BaseWebScraper 3 | 4 | 5 | class FiveMinutesScraper(BaseWebScraper): 6 | _root_url = 'https://tinyletter.com/FiveMinutes' 7 | _name = 'fiveminutes' 8 | 9 | def get_event_urls(self): 10 | page_url = '{}/archive?page=1&recs=1000&sort=desc&q='.format( 11 | self._root_url) 12 | soup = self.get_soup(page_url) 13 | event_urls = [] 14 | for a in soup.find_all('a', href=True, class_='message-link'): 15 | logging.debug('EVENT: {}'.format(a['href'])) 16 | event_urls.append(a['href']) 17 | return event_urls 18 | 19 | def extract_details(self, soup): 20 | """ 21 | Extract details of an event given the web-page. 22 | 23 | Parameters 24 | ---------- 25 | soup : BeautifulSoup 26 | Soup of events webpage. 27 | 28 | Returns 29 | ------- 30 | details : dict 31 | Dictionary containing event-info. 32 | """ 33 | details = dict() 34 | details['SOURCE'] = 'FiveMinutes' 35 | details['NOTES'] = 'Parsed {} for training data'.format(self._root_url) 36 | 37 | details['NAME'] = (soup 38 | .find('h1', class_='subject') 39 | .get_text('\n', strip=True)) 40 | 41 | details['TAGS'] = [] 42 | details['TYPES'] = [] 43 | details['LOCATION'] = None 44 | details['LOCATION_GMAPS'] = None 45 | details['SOCIAL'] = [] 46 | 47 | event_date_time = None 48 | try: 49 | event_date_time = (soup 50 | .find('div', id='message-heading') 51 | .find('div', class_='date') 52 | .get_text(strip=True) 53 | ) 54 | except AttributeError: 55 | pass 56 | details['DATE_TIME'] = event_date_time 57 | 58 | event_organizer = None 59 | try: 60 | event_organizer = (soup 61 | .find('div', class_='by-line') 62 | .get_text(strip=True) 63 | .replace('by ', '', 1)) 64 | except AttributeError: 65 | pass 66 | details['ORGANIZER'] = event_organizer 67 | 68 | body = soup.find('div', class_='message-body') 69 | # hyperlinks to markdown links 70 | for a in body.find_all('a', href=True): 71 | a.replace_with('[{}]({})'.format( 72 | a.get_text(strip=True), 73 | a['href'])) 74 | details['DESCRIPTION'] = body.get_text('\n', strip=True) 75 | 76 | logging.debug('Scraped Data:\n' 77 | 'Source: {SOURCE}\n' 78 | 'Notes: {NOTES}\n' 79 | 'Name: {NAME}\n' 80 | 'Tags: {TAGS}\n' 81 | 'Types: {TYPES}\n' 82 | 'Location: {LOCATION_GMAPS} \t| {LOCATION}\n' 83 | 'Social Links: {SOCIAL}\n' 84 | 'Description:\n{DESCRIPTION}\n' 85 | 'Date/Time: {DATE_TIME}\n' 86 | 'Organizer: {ORGANIZER}\n'.format(**details)) 87 | 88 | return details 89 | 90 | 91 | if __name__ == '__main__': 92 | logging.basicConfig(level=logging.INFO) 93 | # init scraper 94 | scraper = FiveMinutesScraper() 95 | # scrap and save current events 96 | current_events_df = scraper.scrape() 97 | filename = scraper.save_csv(current_events_df) 98 | # combine all events (for training?) 99 | all_events_df = scraper.combine_csv_files() 100 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # indivisible 2 | Aggregating call to action sites into a single application. 3 | 4 | ## Indivisible: 5 | 6 | **Slack:** #indivisible 7 | 8 | **Project Description:** 9 | A variety of civic activism organizations have sprung up in the wake of the election to help mobilize and empower people. The organizations often operate by sending out daily or weekly “actions” that their supporters partake in – whether calling a Member of Congress’s office, attending an event, or reading a key piece of information. As these sites proliferate, it becomes difficult to effectively signal boost and target actions appropriately. 10 | For this project, we will build tools to 11 | * Identify various actions available for users by aggregating different sources of data 12 | * Provide a clean user interface to filter and select actions they are interested in 13 | * Build a dashboard and track action progress/effectiveness over time 14 | * Engage user interest through social media or similar means to identify tasks for more effective actions 15 | 16 | **Project Lead:** 17 | * [@bonfiam](https://datafordemocracy.slack.com/messages/@bonfiam ) 18 | * [@pg](https://datafordemocracy.slack.com/messages/@pg) 19 | 20 | **Maintainers (people with write access):** 21 | We need people; please ping @pg or @bonfiam for your interest. 22 | Scroll down for an overview of current issues! 23 | 24 | **Data:** [https://data.world/data4democracy/indivisible](https://data.world/data4democracy/indivisible) 25 | _Note: Create dataset for project in data.world and link it here._ 26 | 27 | ### Getting started: 28 | * We welcome contributions from first timers 29 | * Browse our help wanted issues, which are [summarized below](#current-issues). See if there is anything that interests you. [Tag Definitions](https://github.com/bstarling/gh-labels-template) 30 | * Core maintainers and project leads are responsible for reviewing and merging all pull requests. In order to prevent frustrations with your first PR we recommend you reach out to our core maintainers who can help you through your first PR. 31 | * Need to practice working with github in a group setting? Checkout [github-playground](https://github.com/Data4Democracy/github-playground) 32 | * Updates to documentation or readme are greatly appreciated and make for a great first PR. They do not need to be discussed in advance and will be merged as soon as possible. 33 | 34 | #### Project setup 35 | * [Create an Anaconda virtual environment](https://uoa-eresearch.github.io/eresearch-cookbook/recipe/2014/11/20/conda/). 36 | * Clone the repository and work on the modules. 37 | * Use [Pylint](https://www.pylint.org/) for code formatting. 38 | 39 | #### Current Issues 40 | Docker infrastructure for development (#6) is needed. 41 | 42 | After that, the first priority is to handle data ingestion. 43 | 44 | * [ ] Establish polling service for incoming emails. See #10 and `ingest/listener.py`. 45 | * [ ] Consume incoming emails for persistence and feature extraction. 46 | See #1, #8, and `ingest/scraper.py`. 47 | * [ ] Implement storage. 48 | - See #3 and #9 for discussion of schema. 49 | - See #13 for related implementation details. 50 | * [ ] Develop feature extraction pipeline to support classification of email contents. See #2 for general discussion on this. 51 | - #7 Discuss potential features of interest. 52 | - #11 Actual implementation of feature extraction. 53 | - #12 Classification strategies. Requires completion of #7 and #11. 54 | 55 | ### Updating wiki 56 | See the [github wiki update guide](https://help.github.com/articles/adding-and-editing-wiki-pages-locally/). 57 | 58 | #### Using issues 59 | * When picking up an issue leave a comment/ mark as in progress and assign yourself. 60 | * Issue comments can be used for communication 61 | * The wiki should be used for different documentation purposes. That will include 62 | 1. Meeting minutes 63 | 2. Design choices 64 | 3. Further reading/tutorials 65 | 66 | ### Skills 67 | * Python : backend for ingesting data that is built in Python. 68 | * JavaScript : the website is built with JavaScript. 69 | -------------------------------------------------------------------------------- /ingest/web_scraper/calltoactivism.py: -------------------------------------------------------------------------------- 1 | from basewebscraper import BaseWebScraper 2 | import logging 3 | 4 | 5 | class CallToActivismScraper(BaseWebScraper): 6 | _name = 'calltoactivism' 7 | _root_url = 'http://www.calltoactivism.com' 8 | 9 | def get_event_urls(self): 10 | url = 'http://www.calltoactivism.com/dailycalltoactions.html' 11 | soup = self.get_soup(url) 12 | event_urls = [] 13 | for h in soup.find_all('h2', class_='wsite-content-title'): 14 | a = h.find('a', href=True) 15 | if a is not None: 16 | eu = a['href'] 17 | # append root url as prefix 18 | if not eu.startswith(self._root_url): 19 | eu = self._root_url + eu 20 | event_urls.append(eu) 21 | 22 | return list(set(event_urls)) 23 | 24 | def extract_details(self, soup): 25 | """ 26 | Extract details of an event given the web-page. 27 | 28 | Parameters 29 | ---------- 30 | soup : BeautifulSoup 31 | Soup of events webpage. 32 | 33 | Returns 34 | ------- 35 | details : dict 36 | Dictionary containing event-info. 37 | """ 38 | import re 39 | details = dict() 40 | details['SOURCE'] = 'calltoactivism.com' 41 | details['NOTES'] = 'Parsed www.calltoactivism.com for training data' 42 | 43 | d = (soup 44 | .find('div', 45 | class_='wsite-section-content')) 46 | 47 | try: 48 | event_name = (d.find('h2') 49 | .get_text('\n', strip=True) 50 | .upper() 51 | .split('\n') 52 | [-1]) 53 | except AttributeError: 54 | pass 55 | details['NAME'] = event_name 56 | 57 | details['TAGS'] = [] 58 | details['TYPES'] = [] 59 | details['LOCATION'] = None 60 | details['LOCATION_GMAPS'] = None 61 | details['SOCIAL'] = [] 62 | event_date_time = None 63 | for h in soup.find_all('h2'): 64 | txt = h.get_text() 65 | match = re.compile('\d+/\d+/20\d+').search(txt) 66 | if match: 67 | event_date_time = txt[match.start():match.end()] 68 | details['DATE_TIME'] = event_date_time 69 | details['ORGANIZER'] = None 70 | 71 | # captialize titles 72 | for t in d.find_all('h2', class_='wsite-content-title'): 73 | t.replace_with('{}\n'.format(t.get_text('\n', strip=True).upper())) 74 | 75 | # hyperlinks to markdown links 76 | for a in d.find_all('a', href=True): 77 | a.replace_with('[{}]({})'.format( 78 | a.get_text(strip=True), a['href'])) 79 | 80 | # list to markdown list 81 | for li in d.find_all('li'): 82 | li.replace_with('- {}'.format(li.get_text(strip=True))) 83 | 84 | details['DESCRIPTION'] = (d.get_text('\n', strip=True)) 85 | logging.debug('Scraped Data:\n' 86 | 'Source: {SOURCE}\n' 87 | 'Notes: {NOTES}\n' 88 | 'Name: {NAME}\n' 89 | 'Tags: {TAGS}\n' 90 | 'Types: {TYPES}\n' 91 | 'Location: {LOCATION_GMAPS} \t| {LOCATION}\n' 92 | 'Social Links: {SOCIAL}\n' 93 | 'Description:\n{DESCRIPTION}\n' 94 | 'Date/Time: {DATE_TIME}\n' 95 | 'Organizer: {ORGANIZER}\n'.format(**details)) 96 | 97 | return details 98 | 99 | 100 | if __name__ == '__main__': 101 | logging.basicConfig(level=logging.INFO) 102 | # init scraper 103 | scraper = CallToActivismScraper() 104 | # scrap and save current events 105 | current_events_df = scraper.scrape() 106 | filename = scraper.save_csv(current_events_df) 107 | # combine all events (for training?) 108 | all_events_df = scraper.combine_csv_files() 109 | -------------------------------------------------------------------------------- /ingest/web_scraper/twohoursaweek.py: -------------------------------------------------------------------------------- 1 | from basewebscraper import BaseWebScraper 2 | 3 | 4 | class TwoHoursAWeekScraper(BaseWebScraper): 5 | _name = 'twohoursaweek' 6 | _root_url = 'http://2hoursaweek.org' 7 | 8 | def get_event_urls(self): 9 | page_url = 'http://2hoursaweek.org' 10 | soup = self.get_soup(page_url) 11 | event_urls = [] 12 | for art in soup.find_all('article', class_=True): 13 | read_more = (art 14 | .find('main') 15 | .find('a', 16 | href=True, 17 | class_='read-more action-link')) 18 | logging.debug('EVENT: {}'.format(read_more['href'])) 19 | event_urls.append(read_more['href']) 20 | return event_urls 21 | 22 | def extract_details(self, soup): 23 | """ 24 | Extract details of an event given the web-page. 25 | 26 | Parameters 27 | ---------- 28 | soup : BeautifulSoup 29 | Soup of events webpage. 30 | 31 | Returns 32 | ------- 33 | details : dict 34 | Dictionary containing event-info. 35 | """ 36 | import re 37 | details = dict() 38 | details['SOURCE'] = '2hoursaweek.org' 39 | details['NOTES'] = 'Parsed www.2hoursaweek.org for training data' 40 | 41 | art = soup.find('article', 42 | class_=True) 43 | main = art.find('main') 44 | action_number = (art 45 | .find('div', class_='number') 46 | .get_text()) 47 | 48 | # Event Name 49 | event_name = (main 50 | .find('h3'). 51 | get_text('\n')) 52 | details['NAME'] = event_name 53 | 54 | # Event Type 55 | event_types = art['class'] 56 | details['TYPES'] = [event_types[0]] 57 | details['TAGS'] = [action_number] + event_types[1:] 58 | 59 | # External Links 60 | event_links = [a['href'] 61 | for a in art.find_all( 62 | 'a', 63 | target='_blank', 64 | href=re.compile('facebook.com/events'))] 65 | details['SOCIAL'] = event_links 66 | 67 | # Main Text 68 | for a in main.find_all('a', href=True): 69 | a.replace_with('[{}]({})'.format( 70 | a.get_text(strip=True), a['href'])) 71 | 72 | description = (main 73 | .get_text('\n', strip=True)) 74 | details['DESCRIPTION'] = description 75 | 76 | details['DATE_TIME'] = None 77 | details['ORGANIZER'] = None 78 | details['LOCATION'] = None 79 | details['LOCATION_GMAPS'] = None 80 | 81 | logging.debug('Scraped Data:\n' 82 | 'Source: {SOURCE}\n' 83 | 'Notes: {NOTES}\n' 84 | 'Name: {NAME}\n' 85 | 'Tags: {TAGS}\n' 86 | 'Types: {TYPES}\n' 87 | 'Location: {LOCATION_GMAPS} \t| {LOCATION}\n' 88 | 'Social Links: {SOCIAL}\n' 89 | 'Description:\n{DESCRIPTION}\n' 90 | 'Date/Time: {DATE_TIME}\n' 91 | 'Organizer: {ORGANIZER}\n'.format(**details)) 92 | 93 | return details 94 | 95 | 96 | if __name__ == '__main__': 97 | """ 98 | Typical Usage: 99 | - Scrape website and get latest info 100 | - Save to CSV file 101 | - Find all previously saved CSV files and combine into single DataFrame 102 | """ 103 | import logging 104 | logging.basicConfig(level=logging.INFO) 105 | # init scraper 106 | scraper = TwoHoursAWeekScraper() 107 | # scrap and save current events 108 | current_events_df = scraper.scrape() 109 | filename = scraper.save_csv(current_events_df) 110 | # combine all events (for training?) 111 | all_events_df = scraper.combine_csv_files() 112 | -------------------------------------------------------------------------------- /ingest/web_scraper/resistancenearme.py: -------------------------------------------------------------------------------- 1 | from bs4 import BeautifulSoup 2 | from basewebscraper import BaseWebScraper 3 | import logging 4 | 5 | 6 | class ResistanceNearMeScraper(BaseWebScraper): 7 | """ 8 | Scraper class for resistancenearme.org 9 | 10 | Needs selenuim to load the webpage, so this class Implements its own 11 | scrape() method, overriding the scrape() method from 12 | AbstractWebScraper. 13 | """ 14 | _name = 'resistancenearme' 15 | _root_url = 'https://resistancenearme.org' 16 | 17 | def get_event_urls(self): 18 | raise NotImplemented 19 | 20 | def extract_details(self, soup): 21 | """ 22 | Extract details of an event given the web-page. 23 | 24 | Parameters 25 | ---------- 26 | soup : BeautifulSoup 27 | Soup of events webpage. 28 | 29 | Returns 30 | ------- 31 | details : dict 32 | Dictionary containing event-info. 33 | """ 34 | details = dict() 35 | details['SOURCE'] = 'resistancenearme.org' 36 | details['NOTES'] = ('Parsed {} for training data' 37 | .format(self._root_url)) 38 | 39 | event_url = soup.find('a', target='_self') 40 | event_url = None if event_url is None else event_url['href'] 41 | details['URL'] = self._root_url + '/' + event_url 42 | 43 | meta = soup.find('ul') 44 | 45 | def read_meta(class_name, missing_value=None): 46 | obj = meta.find(class_=class_name) 47 | if obj is None: 48 | return missing_value 49 | else: 50 | return obj.getText() 51 | 52 | e_venue = read_meta('event-venue') 53 | e_address = read_meta('event-address') 54 | e_date = read_meta('event-date', '') 55 | e_time = read_meta('event-time', '') 56 | 57 | details['ORGANIZER'] = e_venue 58 | details['LOCATION'] = e_address 59 | details['DATE_TIME'] = e_date + e_time 60 | 61 | event_name = soup.find(class_='event-name', 62 | **{'data-value': True}) 63 | event_type = soup.find(class_='event-type', 64 | **{'data-value': True}) 65 | event_name = '' if event_name is None else event_name['data-value'] 66 | event_type = '' if event_type is None else event_type['data-value'] 67 | description = soup['data-content'] 68 | 69 | details['NAME'] = event_name 70 | details['TAGS'] = [event_type] 71 | details['DESCRIPTION'] = description 72 | 73 | # Missing info 74 | details['TYPES'] = [] 75 | details['LOCATION_GMAPS'] = None 76 | details['SOCIAL'] = [] 77 | 78 | logging.debug('Scraped Data:\n' 79 | 'Source: {SOURCE}\n' 80 | 'Notes: {NOTES}\n' 81 | 'Name: {NAME}\n' 82 | 'Tags: {TAGS}\n' 83 | 'Types: {TYPES}\n' 84 | 'Location: {LOCATION_GMAPS} \t| {LOCATION}\n' 85 | 'Social Links: {SOCIAL}\n' 86 | 'Description:\n{DESCRIPTION}\n' 87 | 'Date/Time: {DATE_TIME}\n' 88 | 'Organizer: {ORGANIZER}\n' 89 | 'URL: {URL}\n'.format(**details)) 90 | return details 91 | 92 | def scrape(self): 93 | """ 94 | Scrape website for info on all events. 95 | Details are extracted into a DataFrame object. 96 | 97 | Returns 98 | ------- 99 | event_df : pandas.core.frame.DataFrame 100 | DataFrame object containing info for all events scraped. 101 | """ 102 | from selenium import webdriver 103 | import time 104 | import pandas as pd 105 | from tqdm import tqdm 106 | browser = webdriver.PhantomJS() 107 | browser.set_window_size(1120, 550) 108 | browser.get(self._root_url) 109 | # Allow the page to load completely 110 | # before we start locating elements in the DOM. 111 | from selenium.webdriver.support.ui import WebDriverWait 112 | 113 | def custom_condition(driver): 114 | import time 115 | time.sleep(7) 116 | return True 117 | 118 | WebDriverWait(browser, 10).until(custom_condition) 119 | # first need to click on dropdown-toggle to expand it 120 | dropdowns = browser.find_elements_by_class_name("dropdown-toggle") 121 | event_dd = dropdowns[3] 122 | event_dd.click() 123 | # next click on every event category in dropdown 124 | el = browser.find_elements_by_xpath('//a[@data-filter="meetingType"]') 125 | for element in el: 126 | time.sleep(3) 127 | element.click() 128 | time.sleep(3) 129 | event_dd.click() 130 | # create html parser from this webpage now that events are listed 131 | s = BeautifulSoup(browser.page_source, 'html.parser') 132 | # finds all events 133 | events = s.find_all(class_='event-row') 134 | df = pd.DataFrame() 135 | # for every event, append info to the proper list 136 | for event_soup in tqdm(events, desc='Parsing Events'): 137 | details = self.extract_details(event_soup) 138 | details['LAST_UPDATED'] = pd.Timestamp('now') 139 | df = df.append(details, ignore_index=True) 140 | 141 | return df 142 | 143 | 144 | if __name__ == '__main__': 145 | logging.basicConfig(level=logging.INFO) 146 | # init scraper 147 | scraper = ResistanceNearMeScraper() 148 | # scrap and save current events 149 | current_events_df = scraper.scrape() 150 | filename = scraper.save_csv(current_events_df) 151 | # combine all events (for training?) 152 | all_events_df = scraper.combine_csv_files() 153 | -------------------------------------------------------------------------------- /ingest/web_scraper/dailygrabback.py: -------------------------------------------------------------------------------- 1 | from basewebscraper import BaseWebScraper 2 | 3 | 4 | class DailyGrabBackScraper(BaseWebScraper): 5 | _name = 'dailygrabback' 6 | _root_url = 'https://www.dailygrabback.com' 7 | 8 | def get_event_urls(self): 9 | 10 | def get_events_on_page(soup): 11 | event_urls = [] 12 | for art in soup.find_all('article'): 13 | a = (art 14 | .find('header') 15 | .find('h1') 16 | .find('a', href=True)) 17 | logging.debug('EVENT: {}'.format(a['href'])) 18 | event_urls.append(a['href']) 19 | return event_urls 20 | 21 | def get_older_page(soup): 22 | try: 23 | older = (soup 24 | .find('nav', class_='pagination clear') 25 | .find('div', class_='older') 26 | .find('a', href=True)) 27 | except (AttributeError, TypeError): 28 | return None 29 | return older['href'] if older is not None else None 30 | 31 | next_page_url = '/todays-grab-1/' 32 | event_urls = [] 33 | while next_page_url is not None: 34 | logging.debug('Scraping ' + next_page_url) 35 | soup = self.get_soup(self._root_url + next_page_url) 36 | event_urls.extend(get_events_on_page(soup)) 37 | next_page_url = get_older_page(soup) 38 | 39 | event_urls = [self._root_url + e for e in event_urls] 40 | return event_urls 41 | 42 | def extract_details(self, soup): 43 | """ 44 | Extract details of an event given the web-page. 45 | 46 | Parameters 47 | ---------- 48 | soup : BeautifulSoup 49 | Soup of events webpage. 50 | 51 | Returns 52 | ------- 53 | details : dict 54 | Dictionary containing event-info. 55 | """ 56 | import re 57 | details = dict() 58 | details['SOURCE'] = 'dailygrabback.com' 59 | details['NOTES'] = 'Parsed www.dailygrabback.com for training data' 60 | 61 | art = soup.find('article') 62 | 63 | # Event Name 64 | event_name = (art 65 | .find('header') 66 | .find('h1') 67 | .get_text(strip=True)) 68 | details['NAME'] = event_name 69 | 70 | # Event Date Time 71 | event_datetime = (art 72 | .find('header') 73 | .find('div', class_='entry-dateline') 74 | .get_text(strip=True)) 75 | details['DATE_TIME'] = event_datetime 76 | 77 | # Event Type 78 | try: 79 | event_types = (art 80 | .find('header') 81 | .find('span', class_='entry-category') 82 | .get_text('\n', strip=True) 83 | .split('\n')) 84 | except AttributeError: 85 | event_types = None 86 | 87 | try: 88 | event_tags = [a.get_text() 89 | for a in art.find_all('a', 90 | href=re.compile('\?tag='))] 91 | except AttributeError: 92 | event_tags = None 93 | 94 | details['TYPES'] = event_types 95 | details['TAGS'] = event_tags 96 | 97 | # Main Text 98 | main = (art 99 | .find('div', 100 | class_='entry-content e-content')) 101 | # hyperlink to markdown link 102 | for a in main.find_all('a', href=True): 103 | a.replace_with('[{}]({})'.format( 104 | a.get_text(strip=True), a['href'])) 105 | 106 | description = (main 107 | .get_text('\n', strip=True)) 108 | details['DESCRIPTION'] = description 109 | 110 | # External Links 111 | event_links = [a['href'] 112 | for a in art.find_all( 113 | 'a', 114 | target='_blank', 115 | href=re.compile('facebook.com/events'))] 116 | details['SOCIAL'] = event_links 117 | 118 | # Location 119 | try: 120 | loc_lat = (soup 121 | .find('meta', property="og:latitude") 122 | ['content']) 123 | loc_lon = (soup 124 | .find('meta', property="og:longitude") 125 | ['content']) 126 | details['LOCATION_GMAPS'] = 'www.google.com/maps?q={},{}'.format( 127 | loc_lat, loc_lon) 128 | except: 129 | details['LOCATION_GMAPS'] = None 130 | 131 | details['ORGANIZER'] = None 132 | details['LOCATION'] = None 133 | 134 | logging.debug('Scraped Data:\n' 135 | 'Source: {SOURCE}\n' 136 | 'Notes: {NOTES}\n' 137 | 'Name: {NAME}\n' 138 | 'Tags: {TAGS}\n' 139 | 'Types: {TYPES}\n' 140 | 'Location: {LOCATION_GMAPS} \t| {LOCATION}\n' 141 | 'Social Links: {SOCIAL}\n' 142 | 'Description:\n{DESCRIPTION}\n' 143 | 'Date/Time: {DATE_TIME}\n' 144 | 'Organizer: {ORGANIZER}\n'.format(**details)) 145 | 146 | return details 147 | 148 | 149 | if __name__ == '__main__': 150 | """ 151 | Typical Usage: 152 | - Scrape website and get latest info 153 | - Save to CSV file 154 | - Find all previously saved CSV files and combine into single DataFrame 155 | """ 156 | import logging 157 | logging.basicConfig(level=logging.INFO) 158 | # init scraper 159 | scraper = DailyGrabBackScraper() 160 | # scrap and save current events 161 | current_events_df = scraper.scrape() 162 | filename = scraper.save_csv(current_events_df) 163 | # combine all events (for training?) 164 | all_events_df = scraper.combine_csv_files() 165 | -------------------------------------------------------------------------------- /ingest/web_scraper/risestronger.py: -------------------------------------------------------------------------------- 1 | from basewebscraper import BaseWebScraper 2 | 3 | 4 | class RiseStrongerScraper(BaseWebScraper): 5 | """ 6 | Scrape RiseStronger event pages and parse event details 7 | into relevant fields. 8 | """ 9 | _name = 'risestronger' 10 | _root_url = 'https://risestronger.org' 11 | 12 | def _get_months(self): 13 | """ 14 | Return set of various representations of the month name. 15 | """ 16 | MONTHS = set() 17 | MONTHS_LIST = ['January', 'February', 'March', 'April', 18 | 'May', 'June', 'July', 'August', 19 | 'September', 'October', 'November', 'December'] 20 | for m in MONTHS_LIST: 21 | MONTHS.add(m) 22 | MONTHS.add(m.upper()) 23 | MONTHS.add(m[:3]) 24 | MONTHS.add(m[:3].upper()) 25 | return MONTHS 26 | 27 | def extract_details(self, soup): 28 | """ 29 | Extract details of an event given the web-page. 30 | 31 | Parameters 32 | ---------- 33 | soup : BeautifulSoup 34 | Soup of events webpage. 35 | 36 | Returns 37 | ------- 38 | details : dict 39 | Dictionary containing event-info. 40 | """ 41 | import re 42 | details = dict() 43 | details['SOURCE'] = 'risestronger.org' 44 | details['NOTES'] = 'Parsed www.risestronger.org for training data' 45 | 46 | # Event Name 47 | event_name = soup.h2.get_text(strip=True) 48 | details['NAME'] = event_name 49 | 50 | # Tags 51 | event_tags = [a.get_text() 52 | for a in soup.find_all( 53 | 'a', href=re.compile('^/events\?tags'))] 54 | event_types = [a.get_text() 55 | for a in soup.find_all( 56 | 'a', href=re.compile('^/events\?types'))] 57 | event_location = None 58 | event_location_gmaps = None 59 | map_link = soup.find('a', 60 | href=re.compile('^https://www\.google\.com/maps')) 61 | if map_link is not None: 62 | event_location = map_link.get_text() 63 | event_location_gmaps = map_link['href'] 64 | details['TAGS'] = event_tags 65 | details['TYPES'] = event_types 66 | details['LOCATION'] = event_location 67 | details['LOCATION_GMAPS'] = event_location_gmaps 68 | 69 | # External Links 70 | event_links = [a['href'] 71 | for a in soup.find_all( 72 | 'a', 73 | target='_blank', 74 | href=re.compile('facebook.com/events'))] 75 | details['SOCIAL'] = event_links 76 | 77 | # Main Text 78 | dis = soup.find('div', class_=re.compile(' disclaimer')) 79 | main_text = dis.parent.find('div', class_=True) 80 | assert(main_text is not None) 81 | event_description = (main_text 82 | .get_text('\n', strip=True) 83 | .encode('utf-8')) 84 | details['DESCRIPTION'] = event_description 85 | 86 | # Timing 87 | # TODO Cleanup 88 | event_date_time = None 89 | event_organizer = None 90 | no_organizer = None 91 | subtitle = (main_text 92 | .parent 93 | .parent 94 | .find('div', class_='row')) 95 | for div in subtitle.find_all('div'): 96 | d = div.find('div') 97 | if d is not None and 'social-share-button' == d['class']: 98 | no_organizer = True 99 | break 100 | subtitle_lines = div.get_text('\n', strip=True) 101 | if len(subtitle_lines) == 0: 102 | continue 103 | for line in subtitle_lines.split('\n'): 104 | if not set(line.split(' ')).isdisjoint(self._get_months()): 105 | event_date_time = line 106 | elif line in event_types: 107 | continue 108 | elif line == event_location: 109 | no_organizer = True 110 | break 111 | else: 112 | event_organizer = line 113 | break 114 | if no_organizer or event_organizer is not None: 115 | break 116 | 117 | details['DATE_TIME'] = event_date_time 118 | details['ORGANIZER'] = event_organizer 119 | 120 | logging.debug('Scraped Data:\n' 121 | 'Source: {SOURCE}\n' 122 | 'Notes: {NOTES}\n' 123 | 'Name: {NAME}\n' 124 | 'Tags: {TAGS}\n' 125 | 'Types: {TYPES}\n' 126 | 'Location: {LOCATION_GMAPS} \t| {LOCATION}\n' 127 | 'Social Links: {SOCIAL}\n' 128 | 'Description:\n{DESCRIPTION}\n' 129 | 'Date/Time: {DATE_TIME}\n' 130 | 'Organizer: {ORGANIZER}\n'.format(**details)) 131 | 132 | return details 133 | 134 | def get_event_urls(self): 135 | """ 136 | Return URLs of event-pages on website. 137 | """ 138 | import re 139 | 140 | def _is_pattern(pattern): 141 | return (lambda x: x and bool(re.compile(pattern).search(x))) 142 | 143 | def get_num_pages(): 144 | soup = self.get_soup(self._root_url + 145 | '/events/list') 146 | num_pages = 1 147 | for a in soup.find_all(href=_is_pattern('^/events/list\?page=')): 148 | num_pages = max(num_pages, 149 | int(a['href'][len('/events/list?page='):])) 150 | return num_pages 151 | 152 | def get_events_on_page(page_num): 153 | page_url = '{}/events/list?page={:d}'.format( 154 | self._root_url, 155 | page_num) 156 | soup = self.get_soup(page_url) 157 | event_urls = [] 158 | filter_strings = ['^/events/map$', 159 | '^/events/map\?page=', 160 | '^/events/list\?page=', 161 | '^/events/new$'] 162 | is_non_event = _is_pattern('|'.join(filter_strings)) 163 | for a in soup.find_all(href=_is_pattern('^/events/')): 164 | if is_non_event(a['href']): 165 | continue 166 | event_urls.append(a['href']) 167 | return event_urls 168 | 169 | event_urls = [] 170 | num_pages = get_num_pages() 171 | for page_num in range(1, num_pages + 1): # , desc='Finding Events'): 172 | event_urls.extend(get_events_on_page(page_num)) 173 | 174 | # append root url as prefix 175 | event_urls = [self._root_url + eu for eu in event_urls] 176 | return list(set(event_urls)) 177 | 178 | 179 | if __name__ == '__main__': 180 | """ 181 | Typical Usage: 182 | - Scrape website and get latest info 183 | - Save to CSV file 184 | - Find all previously saved CSV files and combine into single DataFrame 185 | """ 186 | import logging 187 | logging.basicConfig(level=logging.INFO) 188 | # init scraper 189 | scraper = RiseStrongerScraper() 190 | # scrap and save current events 191 | current_events_df = scraper.scrape() 192 | filename = scraper.save_csv(current_events_df) 193 | # combine all events (for training?) 194 | all_events_df = scraper.combine_csv_files() 195 | -------------------------------------------------------------------------------- /ingest/web_scraper/basewebscraper.py: -------------------------------------------------------------------------------- 1 | from abc import ABCMeta, abstractmethod 2 | import logging 3 | 4 | 5 | class BaseWebScraper(metaclass=ABCMeta): 6 | """ 7 | Abstract base class that contains functions for scraping action text and 8 | tags from websites. 9 | """ 10 | _name = 'abstract' 11 | _root_url = '' 12 | 13 | @abstractmethod 14 | def extract_details(self, soup): 15 | """ 16 | Extract details of an event given the web-page. 17 | (NOTE: Website-Dependent function; must be implemented by child class) 18 | 19 | Parameters 20 | ---------- 21 | soup : BeautifulSoup 22 | Soup of events webpage. 23 | 24 | Returns 25 | ------- 26 | details : dict 27 | Dictionary containing event-info. 28 | """ 29 | raise NotImplemented 30 | 31 | @abstractmethod 32 | def get_event_urls(self): 33 | """ 34 | Return URLs of event-pages on website. 35 | (NOTE: Website-Dependent function; must be implemented by child class) 36 | """ 37 | raise NotImplemented 38 | 39 | def scrape(self): 40 | """ 41 | Scrape website for info on all events. 42 | Details are extracted into a DataFrame object. 43 | 44 | Returns 45 | ------- 46 | event_df : pandas.core.frame.DataFrame 47 | DataFrame object containing info for all events scraped. 48 | """ 49 | import urllib.request 50 | from tqdm import tqdm 51 | import random 52 | import time 53 | import pandas as pd 54 | 55 | event_urls = self.get_event_urls() 56 | df = pd.DataFrame() 57 | 58 | for url in tqdm(event_urls, desc='Parsing Events'): 59 | logging.debug('Reading webpage at url {}'.format(url)) 60 | try: 61 | time.sleep(random.uniform(1, 3)) 62 | soup = self.get_soup(url) 63 | except (urllib.error.HTTPError, urllib.error.URLError): 64 | error_msg = '\nHTTPError: Failure to read {}\n'.format(url) 65 | logging.error(error_msg) 66 | continue 67 | except KeyboardInterrupt: 68 | msg = 'KeyboardInterrupt received. Skipping remaining events.' 69 | logging.warning(msg) 70 | return df 71 | 72 | # get details 73 | details = self.extract_details(soup) 74 | details['URL'] = url 75 | details['LAST_UPDATED'] = pd.Timestamp('now') 76 | # TODO Add timezone to LAST_UPDATED ('now', tz='US/Pacific') 77 | df = df.append(details, ignore_index=True) 78 | 79 | return df 80 | 81 | def save_csv(self, events_df, filename=None): 82 | """ 83 | Save events_df into a CSV file. 84 | 85 | Parameters 86 | ---------- 87 | events_df : DataFrame 88 | DataFrame containing info. 89 | filename : string, default None 90 | File path, if None is provided the result is returned as a string. 91 | """ 92 | import time 93 | if filename is None: 94 | timestamp = time.strftime('%Y%m%dT%H%M%S') 95 | _filename = 'scraped_data/{}_events_{}.csv'.format( 96 | self._name, timestamp) 97 | else: 98 | _filename = filename 99 | 100 | events_df.to_csv(_filename, 101 | index=False) 102 | logging.info('Saved events DataFrame to {}'.format(_filename)) 103 | if filename is None: 104 | return _filename 105 | 106 | def get_soup(self, url): 107 | """ 108 | Return soup of webpage at url. 109 | """ 110 | import urllib.request 111 | from bs4 import BeautifulSoup 112 | # header for request 113 | hdr = { 114 | 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11', #NOQA 115 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', #NOQA 116 | 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3', 117 | 'Accept-Encoding': 'none', 118 | 'Accept-Language': 'en-US,en;q=0.8', 119 | 'Connection': 'keep-alive'} 120 | # assemble request 121 | request = urllib.request.Request(url=url, 122 | data=None, 123 | headers=hdr) 124 | response = urllib.request.urlopen(request) 125 | # get required data 126 | data = response.read() 127 | soup = BeautifulSoup(data, 'html.parser') 128 | return soup 129 | 130 | def combine_csv_files(self, csv_files=None): 131 | """ 132 | Read CSV files and combine into single DataFrame object. 133 | Keep only latest versions of each URL. 134 | 135 | Parameters 136 | ---------- 137 | csv_files : list, default None 138 | List of path of CSV files to read, if None is provided the CSV 139 | files in 'scraped_data/' directory are read. 140 | 141 | Returns 142 | ------- 143 | events_df : DataFrame 144 | DataFrame object of events from all CSV files. 145 | """ 146 | from os import walk 147 | import numpy as np 148 | import pandas as pd 149 | 150 | # find files 151 | if csv_files is None: 152 | _CSVs = [] 153 | for dirpath, dirnames, fnames in walk('scraped_data'): 154 | _CSVs.extend([dirpath + '/' + f for f in fnames 155 | if f.lower().endswith('.csv')]) 156 | break 157 | else: 158 | _CSVs = csv_files 159 | 160 | # read CSV files 161 | df_list = [] 162 | for f in _CSVs: 163 | logging.debug('Reading CSV file {}'.format(f)) 164 | df = pd.read_csv(f) 165 | logging.debug('Shape = {}'.format(df.shape)) 166 | df_list.append(df) 167 | 168 | if len(df_list) > 1: 169 | logging.debug('Combining into single DataFrame...') 170 | events_df = (df_list[0] 171 | .append(df_list[1:], 172 | ignore_index=True) 173 | .reset_index(drop=True)) 174 | else: 175 | events_df = df_list[0] 176 | 177 | logging.debug('Finding duplicate events based on URL...') 178 | is_latest = np.array([True] * events_df.shape[0]) 179 | for key, group in events_df.groupby('URL'): 180 | if group.shape[0] > 1: 181 | # find latest timestamp and mark others for deletion 182 | latest_ts = group.LAST_UPDATED.max() 183 | is_latest[group[group.LAST_UPDATED < latest_ts].index] = False 184 | 185 | logging.debug('Dropping {} duplicate events...'.format( 186 | len(is_latest) - np.sum(is_latest))) 187 | events_df = (events_df 188 | .loc[is_latest] 189 | .reset_index(drop=True) 190 | .copy(deep=True)) 191 | return events_df 192 | 193 | def _test_extract_details(self, test_urls): 194 | """ 195 | Test extract_details() on test_urls 196 | 197 | Parameters 198 | ---------- 199 | test_urls : list-like iteratable 200 | Contains URLs that should be parsable by extract_details() 201 | 202 | Returns 203 | ------- 204 | details_list : list 205 | Output of calls to extract_details 206 | """ 207 | details_list = [] 208 | for url in test_urls: 209 | print('test_extract_details(): url = {}'.format(url)) 210 | soup = self.get_soup(url) 211 | details = self.extract_details(soup) 212 | for k, v in details.items(): 213 | print('{: <10s} : {}'.format(k, v)) 214 | print('-' * 80) 215 | details_list.append(details) 216 | return details_list 217 | -------------------------------------------------------------------------------- /ingest/web_scraper/scraped_data/resistancenearme_events_20170831T231018.csv: -------------------------------------------------------------------------------- 1 | DATE_TIME,DESCRIPTION,LAST_UPDATED,LOCATION,LOCATION_GMAPS,NAME,NOTES,ORGANIZER,SOCIAL,SOURCE,TAGS,TYPES,URL 2 | "Thu Aug 31 2017 3 | 09:00 AM, EDT ",There are no notes for this event.,2017-08-31 23:10:17.472550,"433 Hay St, Fayetteville, NC 28301",,"Robert Pittenger (Republican) North Carolina, NC-9",Parsed https://resistancenearme.org for training data,Fayetteville City Hall,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KqTo7AcLD4h1So8-ZqD 4 | "Thu Aug 31 2017 5 | 10:00 AM, EDT ","During these meetings, constituents can meet with members of Congressman Rice?s staff for help with issues involving federal agencies, including claims processing at the VA, Social Security benefits, the IRS, obtaining passports and more. For directions or additional details regarding mobile office hours, please contact the Pee Dee District Office at (843) 679-9781 or the Grand Strand District Office at (843) 445-6459.",2017-08-31 23:10:17.479531,"Hartsville City Hall, 100 E Carolina Ave, Hartsville, SC 29550",,"Tom Rice (Republican) South Carolina, SC-7",Parsed https://resistancenearme.org for training data,Hartsville City Hall ? City Council Chamber,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KrEJjKJEBb0DVtAQNX5 6 | "Thu, Aug 10, 2017 7 | 10:30 AM, EDT ",There are no notes for this event.,2017-08-31 23:10:17.486011,"1515 W Palmetto Park Rd, Boca Raton, FL 33486",,"Theodore E. Deutch (Democratic) Florida, FL-22",Parsed https://resistancenearme.org for training data,The Volen Center ,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-Kqy7h35FzW4R6hiuHJ5 8 | "Thu Aug 31 2017 9 | 10:30 AM, EDT ",There are no notes for this event.,2017-08-31 23:10:17.491901,"1515 W Palmetto Park Rd, Boca Raton, FL 33486",,"Theodore E. Deutch (Democratic) Florida, FL-22",Parsed https://resistancenearme.org for training data,Mae Volen Senior Center ,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-Krb8llOY0QRXQ7AQZhH 10 | "Thu Aug 31 2017 11 | 10:30 AM, EDT ",There are no notes for this event.,2017-08-31 23:10:17.497837,"1515 W Palmetto Park Rd, Boca Raton, FL 33486",,"Theodore E. Deutch (Democratic) Florida, FL-22",Parsed https://resistancenearme.org for training data,The Volen Center ,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-Kqy7h35FzW4R6hiuHJ5 12 | "Thu, Aug 31 2017 13 | 8:00 AM, America/New_York ",For more information contact Monroe District Office at (770) 207-1776.,2017-08-31 23:10:17.504944,"109 Alexander St., Crawfordville GA 30631",,"Jody Hice (Republican) Georgia, GA-10",Parsed https://resistancenearme.org for training data,Taliaferro County Farm Bureau,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-Ksj1OlrnCQv1oRwsocu 14 | "Thu Aug 31 2017 15 | 10:00 AM, CDT ",There are no notes for this event.,2017-08-31 23:10:17.510966,"511 Main St, Mapleton, IA 51034",,"Chuck Grassley (Republican) Iowa, Senate",Parsed https://resistancenearme.org for training data,Mapleton Community Center ,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KqyFx-yWQ89gF10wtzR 16 | "Thu, Aug 31, 2017 17 | 9:00 AM, America/Los_Angeles ","Join Congressman Larsen for two public Senior Forums to help answer questions about retirement, disability & Medicare benefits. 18 | 19 | PANELISTS WILL INCLUDE REPRESENTATIVES FROM: 20 | - Social Security Administration; 21 | - Centers for Medicare & Medicaid Services; 22 | - Washington Statewide Health Insurance Benefits Advisors; 23 | - Homage Senior Services in Snohomish County, and; 24 | - Northwest Regional Council in Whatcom County.",2017-08-31 23:10:17.517800,"315 Halleck St, Bellingham, WA 98225",,"Rick Larsen (Democratic) Washington, WA-2",Parsed https://resistancenearme.org for training data,Bellingham Senior Activity Center ,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=fb_1525395080840465 25 | "Thu, Aug 31 2017 26 | 9:00 AM, PDT ","PANELISTS WILL INCLUDE REPRESENTATIVES FROM: 27 | ? Social Security Administration; 28 | ? Centers for Medicare & Medicaid Services; 29 | ? Washington Statewide Health Insurance Benefits Advisors; 30 | ? Homage Senior Services in Snohomish County, and; 31 | ? Northwest Regional Council in Whatcom County.",2017-08-31 23:10:17.525314,"315 Halleck St, Bellingham, WA 98225",,"Rick Larsen (Democratic) Washington, WA-2",Parsed https://resistancenearme.org for training data,Bellingham Senior Activity Center,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KrgBU6t4hW1zzIJMf1S 32 | "Thu, Aug 31, 2017 33 | 9:30 AM, America/Chicago ",There are no notes for this event.,2017-08-31 23:10:17.532522,"301 S 68th St Pl, Lincoln, NE 68510",,"Deb Fischer (Republican) Nebraska, Senate",Parsed https://resistancenearme.org for training data,Jack J. Huck Continuing Education Center Southeast Community College ,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KseUwE4E7xQYpLY7ijD 34 | "Thu Aug 31 2017 35 | 1:30 PM, EDT ",There are no notes for this event.,2017-08-31 23:10:17.539661,"106 M.L.K. Jr Dr, Elizabethtown, NC 28337",,"Robert Pittenger (Republican) North Carolina, NC-9",Parsed https://resistancenearme.org for training data,Cape Fear Farmer?s Market,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KqTomfRKf3_xuWGyVsF 36 | "Thu Aug 31 2017 37 | 2:00 PM, EDT ","During these meetings, constituents can meet with members of Congressman Rice?s staff for help with issues involving federal agencies, including claims processing at the VA, Social Security benefits, the IRS, obtaining passports and more. For directions or additional details regarding mobile office hours, please contact the Pee Dee District Office at (843) 679-9781 or the Grand Strand District Office at (843) 445-6459.",2017-08-31 23:10:17.545282,"400 Pearl St, Darlington, SC 29532",,"Tom Rice (Republican) South Carolina, SC-7",Parsed https://resistancenearme.org for training data,Darlington City Municipal Court Building ? Old City Hall Council Chamber,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KrEK2jKpcVFfak-D5dU 38 | "Thu, Aug 31 2017 39 | 11:30 AM, America/Phoenix ",There are no notes for this event.,2017-08-31 23:10:17.551438,5501 N Hacienda del Rol Rd Tucson AZ,,"Martha McSally (Republican) Arizona, AZ-2",Parsed https://resistancenearme.org for training data,Hacienda Del Sol Guest Ranch Resort,[],resistancenearme.org,['Ticketed Event'],[],https://resistancenearme.org/event.html?eid=-KsjJFH1ZJ-rHUFR8ldJ 40 | "Thu Aug 31 2017 41 | 2:45 PM, CDT ",There are no notes for this event.,2017-08-31 23:10:17.557365,"718 Court St, Harlan, IA 51537",,"Chuck Grassley (Republican) Iowa, Senate",Parsed https://resistancenearme.org for training data,Harlan Community Library ,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KqyGJVSivtPPFGIHtvt 42 | "Thu, Aug 31 2017 43 | 5:00 PM, EDT ","Doors open at 4:15pm, event starts at 5:00pm and ends at 6:30pm. First come, first seated. All are welcome to come. You can RSVP ahead of time below or you can same-day RSVP at the event, but space is limited.",2017-08-31 23:10:17.563938,"Rockwell Hall, 1300 Elmwood Ave, Buffalo, NY 14222",,"Kirsten Gillibrand (Democratic) New York, Senate",Parsed https://resistancenearme.org for training data,Rockwell Hall Auditorium at Buffalo State College,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-Kso2oAy_oG-F_yDaBTj 44 | "Thu, Aug 31, 2017 45 | 2:30 PM, America/Los_Angeles ",There are no notes for this event.,2017-08-31 23:10:17.571085,"4100 Alderwood Mall Blvd #1, Lynnwood, WA 98036",,"Rick Larsen (Democratic) Washington, WA-2",Parsed https://resistancenearme.org for training data,"The Center for Healthy Living, ",[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=fb_116443752344661 46 | "Thu, Aug 31 2017 47 | 2:30 PM, America/Los_Angeles ","PANELISTS WILL INCLUDE REPRESENTATIVES FROM: 48 | ? Social Security Administration; 49 | ? Centers for Medicare & Medicaid Services; 50 | ? Washington Statewide Health Insurance Benefits Advisors; 51 | ? Homage Senior Services in Snohomish County, and; 52 | ? Northwest Regional Council in Whatcom County.",2017-08-31 23:10:17.578077,"4100 Alderwood Mall Blvd #1, Lynnwood, WA 98036",,"Rick Larsen (Democratic) Washington, WA-2",Parsed https://resistancenearme.org for training data,Homage Senior Services' Center for Healthy Living,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KrgD1_3leofPS2QX3Va 53 | "Thu Aug 31 2017 54 | 3:30 PM, America/Denver ",There are no notes for this event.,2017-08-31 23:10:17.584793,,,"Steve Pearce (Republican) New Mexico, NM-2",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KrC2SmE6q33KEnzDc8- 55 | "Thu Aug 31 2017 56 | 6:30 PM, EDT ","The event will be moderated by Gerald Benjamin, vice president of Regional Research and Education at SUNY New Paltz, and Debra Clinton, local public school administrator and founder of Move Forward New York. Benjamin is a former Republican chairman of the Ulster County Legislature and frequent commentator on state politics. 57 | 58 | Seventy of the 200 tickets to the event will be allocated for Move Forward New York members, 70 will be distributed by Faso?s office, and 60 tickets will be distributed on a first-come, first-served basis at the door. Doors will open at 6 p.m. 59 | 60 | Members of Move Forward New York may request tickets by email to mfny19@gmail.com at or after 8 p.m. on Aug. 21. Seats will be allocated to members on a first-come, first-served basis by the group based on email time stamps.",2017-08-31 23:10:17.590562,"284 Broadway, Port Ewen, NY 12466",,"John Faso (Republican) New York, NY-19",Parsed https://resistancenearme.org for training data,Esopus Town Hall,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KrDBjk6kImvOZfX5hf7 61 | "Thu Aug 31 2017 62 | 7:00 PM, EDT ",There are no notes for this event.,2017-08-31 23:10:17.597955,"1800 Pineville-Matthews Rd, Charlotte, NC 28270",,"Robert Pittenger (Republican) North Carolina, NC-9",Parsed https://resistancenearme.org for training data,Providence High School,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KqToxTeca1W353wlEIC 63 | "Thu Aug 31 2017 64 | 6:00 PM, CDT ","If you plan to attend, please abide by the following rules. Additionally, be advised that the meeting (including the audience) will be recorded by the Congressman for official use. 65 | 66 | ? Wait to be recognized before speaking so everyone can hear. 67 | ? Comments and questions should be directed to the Congressman, not to other audience members. 68 | ? We have limited time; please keep your questions and comments concise. 69 | ? This is an official federal meeting ? campaigning of any kind (including distribution of campaign material) is prohibited. 70 | ? No other handouts or signs are permitted. 71 | 72 | All media please RSVP to Daniel Rhea at Daniel.rhea@mail.house.gov 73 | ###",2017-08-31 23:10:17.604260,"7120 S Cooper St, Arlington, TX 76001",,"Joe Barton (Republican) Texas, TX-6",Parsed https://resistancenearme.org for training data,Cooper Street YMCA ,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KqslO1t45CQVcjQ9N88 74 | "Thu, Aug 31 2017 75 | 5:30 PM, America/New_York ",There are no notes for this event.,2017-08-31 23:10:17.610261,"3000 Leonard St NE Grand Rapids, MI 49525",,"Justin Amash (Republican) Michigan, MI-3",Parsed https://resistancenearme.org for training data,Cornerstone University Grand Rapids Theological Seminary Building Matthews Performing Arts Center ,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-Kso59d0EVVEeVjw9ZsU 76 | "Thu, Aug 31 2017 77 | 6:00 PM, America/Los_Angeles ","Residents of Congressional District 10 join together for a town hall to talk about health care, immigration, and the environment. 78 | 79 | Partners involved: Faith in the Valley, SEIU 2015, NAACP, Planned Parenthood Advocates Mar 80 | Monte, ACLU, SIREN, Our Revolution, Stanislaus Resistance, Indivisible Stanislaus, Indivisible 81 | Manteca, Indivisible Tracy, SEIU-USWW, Be the Change- Turlock, Mi Familia Vota",2017-08-31 23:10:17.616220,"1341 College Ave, Modesto, CA 95350",,"Jeff Denham (Republican) California, CA-10",Parsed https://resistancenearme.org for training data,College Avenue Congregational Church,[],resistancenearme.org,['Empty Chair Town Hall'],[],https://resistancenearme.org/event.html?eid=-KsjQNEPnnGxmdsy7x3b 82 | "Thu Aug 31 2017 83 | 09:00 PM, America/Denver ",There are no notes for this event.,2017-08-31 23:10:17.622208,"114 W Mills Ave, El Paso, TX 79901",,"Beto O'Rourke (Democratic) Texas, TX-16",Parsed https://resistancenearme.org for training data,San Jacinto Plaza,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KrckfMmF8kJDW31KWIo 84 | "Fri, Sep 01, 2017 85 | 10:00 AM, America/Los_Angeles ",There are no notes for this event.,2017-08-31 23:10:17.629630,"850 Pomona Ave, Crockett, California 94525",,"Mike Thompson (Democratic) California, CA-5",Parsed https://resistancenearme.org for training data,Crockett Community Services District,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-Kstv1UzDjg8szh1QWZ6 86 | "Fri, Sep 1, 2017 87 | 10:00 AM, PDT ",There are no notes for this event.,2017-08-31 23:10:17.636146,"850 Pomona Ave, Crockett, CA 94525",,"Mike Thompson (Democratic) California, CA-5",Parsed https://resistancenearme.org for training data,Crockett Community Services District,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=fb_336289353489096 88 | "Fri, Sep 1 2017 89 | 3:00 PM, America/Chicago ",There are no notes for this event.,2017-08-31 23:10:17.642104,"700 Railroad Avenue, Ballinger Texas, 76821",,"Mike Conaway (Republican) Texas, TX-11",Parsed https://resistancenearme.org for training data,"City Hall, Council Chamber",[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KsPoQhH7hvO6IjOS_w4 90 | "Fri, Sep 1 2017 91 | 12:00 PM, America/New_York ",There are no notes for this event.,2017-08-31 23:10:17.648086,"231 S Broadway St Hastings, MI 49058",,"Justin Amash (Republican) Michigan, MI-3",Parsed https://resistancenearme.org for training data,Barry Community Enrichment Center Leason Sharpe Hall,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-Kso4RJ87BflKqRlwCbe 92 | "Fri, Sep 1 2017 93 | 3:00 PM, CDT ",There are no notes for this event.,2017-08-31 23:10:17.653984,"700 Railroad Ave, Ballinger, TX 76821",,"Mike Conaway (Republican) Texas, TX-11",Parsed https://resistancenearme.org for training data,"City Hall, Council Chamber",[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KsPnqkfl3RBarATCX9Q 94 | "Fri, Sep 1 2017 95 | 10:00 PM, America/Chicago ",There are no notes for this event.,2017-08-31 23:10:17.661575,"501 E. Fonner Park Road, Grand Island, NE",,"Adrian Smith (Republican) Nebraska, NE-3",Parsed https://resistancenearme.org for training data,Bosselman Conference Center at the Nebraska State Fair,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KsdqQ_zkcrgcLGTB-q4 96 | "Sat, Sep 2 2017 97 | 3:00 PM, EDT ","Join us for a town hall at the Morgantown Church of the Brethren (464 Virginia Avenue) about the proposed Trump budget, which gives massive tax cuts to the wealthy by cutting the basics, like Medicare, Medicaid, and education. We?ll hear from policy experts and local organizations about how the budget would affect our community. Senator Shelley Moore Capito and Congressman David McKinley and the media have been invited. It?s critical that we show up to send a strong message to protect essential services for West Virginians.",2017-08-31 23:10:17.667664,"464 Virginia Ave, Morgantown, WV 26505",,"David McKinley (Republican) West Virginia, WV-1",Parsed https://resistancenearme.org for training data,Church of the Brethren,[],resistancenearme.org,['Empty Chair Town Hall'],[],https://resistancenearme.org/event.html?eid=-KseqYoBjazZQWvlIiJC 98 | "Tue Sep 05 2017 99 | 10:00 AM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 100 | 101 | *Note* 102 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 103 | - Congressman will not be present.",2017-08-31 23:10:17.674709,"71 Case Ave, Trenton, GA 30752",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Administrative Building ?Commissioners Meeting Room? ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAeAn0SqM0S8EqyAEu 104 | "Tue Sep 05 2017 105 | 10:00 AM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 106 | 107 | *Note* 108 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 109 | - Congressman will not be present.",2017-08-31 23:10:17.681434,"71 Case Ave, Trenton, GA 30752",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Administrative Building ?Commissioners Meeting Room? ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAeAn0SqM0S8EqyAEu 110 | "Tue Sep 05 2017 111 | 10:30 AM, America/New_York ",There are no notes for this event.,2017-08-31 23:10:17.689379,"340 Haven St, Schuylkill Haven, PA 17972",,"Matt Cartwright (Democratic) , PA-17",Parsed https://resistancenearme.org for training data,Schuylkill Haven Recreation Department,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=fb_336157723473611 112 | "Tue Sep 05 2017 113 | 1:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 114 | 115 | *Note* 116 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 117 | - Congressman will not be present.",2017-08-31 23:10:17.695772,"101 S Duke St, LaFayette, GA 30728",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Courthouse Annex I ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAmXNylbNm8l3oUxnY 118 | "Tue Sep 05 2017 119 | 1:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 120 | 121 | *Note* 122 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 123 | - Congressman will not be present.",2017-08-31 23:10:17.702830,"101 S Duke St, LaFayette, GA 30728",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Courthouse Annex I ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAmXNylbNm8l3oUxnY 124 | "Tue, Sep 05, 2017 125 | 7:15 PM, EDT ","To participate, dial 877-228-2184 and enter event ID 19013 at the time of the event.",2017-08-31 23:10:17.709189,Pennsylvania,,"Mike Kelly (Republican) Pennsylvania, PA-3",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Tele-Town Hall'],[],https://resistancenearme.org/event.html?eid=-KstJ3myao_yokmhQtjb 126 | "Tue, Sep 5 2017 127 | 7:30 PM, America/New_York ",There are no notes for this event.,2017-08-31 23:10:17.715985,,,"Ryan Costello (Republican) Pennsylvania, PA-6",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Tele-Town Hall'],[],https://resistancenearme.org/event.html?eid=-KsfxMWCUMGmZAtrogPK 128 | "Sat Sep 09 2017 129 | 09:00 AM, CDT ",There are no notes for this event.,2017-08-31 23:10:17.723065,"109 N Main St, Hartford, WI 53027",,"Jim Sensenbrenner (Republican) Wisconsin, WI-5",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KnaAp73DnDVtIN6NpL7 130 | "Sat Sep 09 2017 131 | 09:00 AM, CDT ",There are no notes for this event.,2017-08-31 23:10:17.728958,"109 N Main St, Hartford, WI 53027",,"Jim Sensenbrenner (Republican) Wisconsin, WI-5",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KnaAp73DnDVtIN6NpL7 132 | "Sat Sep 09 2017 133 | 10:00 AM, MDT ",There are no notes for this event.,2017-08-31 23:10:17.735214,"11465 Washington St, Northglenn, CO 80233",,"Ed Perlmutter (Democratic) Colorado, CO-7",Parsed https://resistancenearme.org for training data,Natural Grocers,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KrDNNa8H4m2NIbZDqhT 134 | "Sat Sep 09 2017 135 | 1:00 PM, CDT ",There are no notes for this event.,2017-08-31 23:10:17.740963,"13600 Juneau Blvd, Elm Grove, WI 53122",,"Jim Sensenbrenner (Republican) Wisconsin, WI-5",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KnaBDFPObAERGPrAEDZ 136 | "Sat Sep 09 2017 137 | 1:00 PM, CDT ",There are no notes for this event.,2017-08-31 23:10:17.748791,"13600 Juneau Blvd, Elm Grove, WI 53122",,"Jim Sensenbrenner (Republican) Wisconsin, WI-5",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KnaBDFPObAERGPrAEDZ 138 | "Sun Sep 10 2017 139 | 3:00 PM, EDT ",Join Reps. Don Beyer and John Larson for a forum on social security.,2017-08-31 23:10:17.756328,"3500 23rd St S, Arlington, VA 22206",,"Donald Beyer (Democratic) Virginia, VA-8",Parsed https://resistancenearme.org for training data,Drew Model School,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KrwPkB35ahdVjA_BEF_ 140 | "Mon, Sep 11 2017 141 | 7:00 PM, America/Chicago ",Registration will close on September 11 at noon CT / 11:00 a.m. MT.,2017-08-31 23:10:17.762614,,,"Adrian Smith (Republican) Nebraska, NE-3",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Tele-Town Hall'],[],https://resistancenearme.org/event.html?eid=-KsdqrmGWYaiq8uAzl6D 142 | "Tue Sep 12 2017 143 | 10:00 AM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 144 | 145 | *Note* 146 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 147 | - Congressman will not be present.",2017-08-31 23:10:17.768635,"360 Farrar Dr, Summerville, GA 30747",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Chattooga County Library (Meeting Room) ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAd0pb2cDOWSxNodks 148 | "Tue Sep 12 2017 149 | 10:00 AM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 150 | 151 | *Note* 152 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 153 | - Congressman will not be present.",2017-08-31 23:10:17.775723,"9273 Hwy 53, Jasper, GA 30143",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Hinton Volunteer Fire Department ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAkSLEPF8oIpVWKAwq 154 | "Tue Sep 12 2017 155 | 10:00 AM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 156 | 157 | *Note* 158 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 159 | - Congressman will not be present.",2017-08-31 23:10:17.784239,"360 Farrar Dr, Summerville, GA 30747",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Chattooga County Library (Meeting Room) ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAd0pb2cDOWSxNodks 160 | "Tue Sep 12 2017 161 | 10:00 AM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 162 | 163 | *Note* 164 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 165 | - Congressman will not be present.",2017-08-31 23:10:17.789970,"9273 Hwy 53, Jasper, GA 30143",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Hinton Volunteer Fire Department ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAkSLEPF8oIpVWKAwq 166 | "Tue Sep 12 2017 167 | 1:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 168 | 169 | *Note* 170 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 171 | - Congressman will not be present.",2017-08-31 23:10:17.796125,"1151 GA-53 Spur, Calhoun, GA 30701",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,"Georgia Northwestern Technical College ? Gordon County Campus Building 400, Room 4-103 ",[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAfGLAmGh1PTgiQ9Ly 172 | "Tue Sep 12 2017 173 | 10:00 AM, PDT ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please click to RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. RSVP here so staff know to expect you: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours 174 | 175 | NOTE: Congressman will not be present.",2017-08-31 23:10:17.801798,"5605 Marconi Ave, Carmichael, CA 95608",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Carmichael Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KleVABkounh-x8eZUPx 176 | "Tue Sep 12 2017 177 | 1:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 178 | 179 | *Note* 180 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 181 | - Congressman will not be present.",2017-08-31 23:10:17.807748,"1151 GA-53 Spur, Calhoun, GA 30701",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,"Georgia Northwestern Technical College ? Gordon County Campus Building 400, Room 4-103 ",[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAfGLAmGh1PTgiQ9Ly 182 | "Tue Sep 12 2017 183 | 10:00 AM, PDT ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please click to RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. RSVP here so staff know to expect you: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours 184 | 185 | NOTE: Congressman will not be present.",2017-08-31 23:10:17.815230,"5605 Marconi Ave, Carmichael, CA 95608",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Carmichael Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KleVABkounh-x8eZUPx 186 | "Tue Sep 12 2017 187 | 2:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 188 | 189 | *Note* 190 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 191 | - Congressman will not be present.",2017-08-31 23:10:17.821486,"201 East Ave, Cedartown, GA 30125",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,"Cedartown Municipal Complex, City Hall-City Council Room",[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAlYTIQiSwF3OA-G3C 192 | "Tue Sep 12 2017 193 | 2:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 194 | 195 | *Note* 196 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 197 | - Congressman will not be present.",2017-08-31 23:10:17.830522,"201 East Ave, Cedartown, GA 30125",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,"Cedartown Municipal Complex, City Hall-City Council Room",[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAlYTIQiSwF3OA-G3C 198 | "Wed Sep 13 2017 199 | 6:00 PM ",There are no notes for this event.,2017-08-31 23:10:17.836705,Utah,,"Mike Lee (Republican) Utah, Senate",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Tele-Town Hall'],[],https://resistancenearme.org/event.html?eid=-Kgq4__rJ1jMncslX0rw 200 | "Wed Sep 13 2017 201 | 6:00 PM, America/Denver ",There are no notes for this event.,2017-08-31 23:10:17.846140,Utah,,"Mike Lee (Republican) Utah, Senate",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Tele-Town Hall'],[],https://resistancenearme.org/event.html?eid=-Kgq4__rJ1jMncslX0rw 202 | "Fri Sep 15 2017 203 | 8:00 AM, America/New_York ",There are no notes for this event.,2017-08-31 23:10:17.857215,"251 Exchange St, Athol, MA 01331",,"James McGovern (Democratic) , MA-2",Parsed https://resistancenearme.org for training data,North Quabbin Community Coalition,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=fb_1901035293472965 204 | "Fri Sep 15 2017 205 | 7:00 PM, PDT ",There are no notes for this event.,2017-08-31 23:10:17.867839,"503 B St, Point Reyes Station, CA 94956",,"Jared Huffman (Democratic) California, CA-2",Parsed https://resistancenearme.org for training data,DANCE PALACE ,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KqekpPACazQkhFzge2b 206 | "Sun Sep 17 2017 207 | 7:00 PM, EDT ",Join Rep. Beyer for a forum on current events.,2017-08-31 23:10:17.875455,"1633 Davidson Rd, McLean, VA 22101",,"Donald Beyer (Democratic) Virginia, VA-8",Parsed https://resistancenearme.org for training data,McLean High School,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KrwQI80fgtg9rSiBkHA 208 | "Mon Sep 18 2017 209 | 7:00 PM, America/Denver ",There are no notes for this event.,2017-08-31 23:10:17.882391,Colorado,,"Ed Perlmutter (Democratic) Colorado, CO-7",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Tele-Town Hall'],[],https://resistancenearme.org/event.html?eid=-KrDNwIUDYVz2qI_xVMm 210 | "Tue Sep 19 2017 211 | 10:00 AM, PDT ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please click to RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. Please RSVP here so the staff know to expect you: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours. 212 | 213 | NOTE: Congressman will not be in attendance.",2017-08-31 23:10:17.888921,"10055 Franklin High Rd, Elk Grove, CA 95757",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Franklin Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfBAhvWCvvt8m0P439 214 | "Tue Sep 19 2017 215 | 10:00 AM, PDT ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please click to RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. Please RSVP here so the staff know to expect you: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours. 216 | 217 | NOTE: Congressman will not be in attendance.",2017-08-31 23:10:17.896640,"10055 Franklin High Rd, Elk Grove, CA 95757",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Franklin Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfBAhvWCvvt8m0P439 218 | "Sun Sep 24 2017 219 | 1:00 PM, CDT ",There are no notes for this event.,2017-08-31 23:10:17.902521,"W302N1254 Maple Ave, Delafield, WI 53018",,"Jim Sensenbrenner (Republican) Wisconsin, WI-5",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KnaBSFo7avUz0S3s40r 220 | "Sun Sep 24 2017 221 | 1:00 PM, CDT ",There are no notes for this event.,2017-08-31 23:10:17.908798,"W302N1254 Maple Ave, Delafield, WI 53018",,"Jim Sensenbrenner (Republican) Wisconsin, WI-5",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KnaBSFo7avUz0S3s40r 222 | "Tue Sep 26 2017 223 | 10:00 AM, PDT ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please click to RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. Please RSVP here so the staff know to expect you: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours. 224 | 225 | NOTE: Congressman will not be in attendance.",2017-08-31 23:10:17.916015,"9845 Folsom Blvd, Sacramento, CA 95827",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL- Rancho Cordova Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfBsGrhW8AnSmg5KWG 226 | "Tue Sep 26 2017 227 | 10:00 AM, PDT ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please click to RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. Please RSVP here so the staff know to expect you: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours. 228 | 229 | NOTE: Congressman will not be in attendance.",2017-08-31 23:10:17.921814,"9845 Folsom Blvd, Sacramento, CA 95827",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL- Rancho Cordova Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfBsGrhW8AnSmg5KWG 230 | "Tue Oct 03 2017 231 | 1:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 232 | 233 | *Note* 234 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 235 | - Congressman will not be present.",2017-08-31 23:10:17.927557,"2265 US-411, Fairmount, GA 30139",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Fairmount City Hall ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAgBp--3ZLQWmyGRhs 236 | "Tue Oct 03 2017 237 | 10:00 AM, PDT ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please click to RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. Please RSVP here to let staff know to expect you: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours 238 | 239 | NOTE: Congressman will not be in attendance.",2017-08-31 23:10:17.933831,"891 Watt Ave, Sacramento, CA 95864",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Arden Dimick Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfCGHWZErBQ9CAqy1a 240 | "Tue Oct 03 2017 241 | 1:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 242 | 243 | *Note* 244 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 245 | - Congressman will not be present.",2017-08-31 23:10:17.939620,"2265 US-411, Fairmount, GA 30139",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Fairmount City Hall ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAgBp--3ZLQWmyGRhs 246 | "Tue Oct 03 2017 247 | 10:00 AM, PDT ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please click to RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. Please RSVP here to let staff know to expect you: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours 248 | 249 | NOTE: Congressman will not be in attendance.",2017-08-31 23:10:17.945296,"891 Watt Ave, Sacramento, CA 95864",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Arden Dimick Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfCGHWZErBQ9CAqy1a 250 | "Tue Oct 10 2017 251 | 10:00 AM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 252 | 253 | *Note* 254 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 255 | - Congressman will not be present.",2017-08-31 23:10:17.951469,"800 Lafayette St, Ringgold, GA 30736",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,County Administrative Building ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAc-ixNdqaUS5csd6X 256 | "Tue Oct 10 2017 257 | 10:00 AM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 258 | 259 | *Note* 260 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 261 | - Congressman will not be present. ",2017-08-31 23:10:17.957056,"360 Farrar Dr, Summerville, GA 30747",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Chattooga County Library (Meeting Room) ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAdICCLFr1RsCzidjM 262 | "Tue Oct 10 2017 263 | 10:00 AM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 264 | 265 | *Note* 266 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 267 | - Congressman will not be present. ",2017-08-31 23:10:17.963163,"360 Farrar Dr, Summerville, GA 30747",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Chattooga County Library (Meeting Room) ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAdICCLFr1RsCzidjM 268 | "Tue Oct 10 2017 269 | 10:00 AM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 270 | 271 | *Note* 272 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 273 | - Congressman will not be present.",2017-08-31 23:10:17.969352,"800 Lafayette St, Ringgold, GA 30736",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,County Administrative Building ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAc-ixNdqaUS5csd6X 274 | "Tue Oct 10 2017 275 | 1:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 276 | 277 | *Note* 278 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 279 | - Congressman will not be present.",2017-08-31 23:10:17.977210,"121 N 4th Ave, Chatsworth, GA 30705",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Courthouse Annex ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAi1qrIEtzFEKXTI_G 280 | "Tue Oct 10 2017 281 | 1:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 282 | 283 | *Note* 284 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 285 | - Congressman will not be present.",2017-08-31 23:10:17.985320,"121 N 4th Ave, Chatsworth, GA 30705",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Courthouse Annex ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAi1qrIEtzFEKXTI_G 286 | "Tue Oct 10 2017 287 | 2:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 288 | 289 | *Note* 290 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 291 | - Congressman will not be present.",2017-08-31 23:10:17.990695,"201 East Ave, Cedartown, GA 30125",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,"Cedartown Municipal Complex, City Hall-City Council Room ",[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAluJDhILdU1Dxs221 292 | "Tue Oct 10 2017 293 | 2:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 294 | 295 | *Note* 296 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 297 | - Congressman will not be present.",2017-08-31 23:10:17.996957,"201 East Ave, Cedartown, GA 30125",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,"Cedartown Municipal Complex, City Hall-City Council Room ",[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAluJDhILdU1Dxs221 298 | "Sat, Oct 14 2017 299 | 8:30 AM, EDT ",Women's Conference and Forum with Rep. Beyer.,2017-08-31 23:10:18.002607,"Founders Hall, 3351 Fairfax Dr, Arlington, VA 22201",,"Donald Beyer (Democratic) Virginia, VA-8",Parsed https://resistancenearme.org for training data,George Mason University,[],resistancenearme.org,['Town Hall'],[],https://resistancenearme.org/event.html?eid=-KsctktT67V4kVWmsoWi 300 | "Tue Oct 17 2017 301 | 10:00 AM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 302 | 303 | *Note* 304 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 305 | - Congressman will not be present.",2017-08-31 23:10:18.007795,"9273 Hwy 53, Jasper, GA 30143",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Hinton Volunteer Fire Department ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAkg-kuWNbKTjEyKTW 306 | "Tue Oct 17 2017 307 | 10:00 AM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 308 | 309 | *Note* 310 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 311 | - Congressman will not be present.",2017-08-31 23:10:18.013265,"9273 Hwy 53, Jasper, GA 30143",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Hinton Volunteer Fire Department ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAkg-kuWNbKTjEyKTW 312 | "Tue Oct 17 2017 313 | 1:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 314 | 315 | *Note* 316 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 317 | - Congressman will not be present.",2017-08-31 23:10:18.019307,"1151 GA-53 Spur, Calhoun, GA 30701",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,"Georgia Northwestern Technical College ? Gordon County Campus Building 400, Room 4-103 ",[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAfYHBvS9DtkS9uB_p 318 | "Tue Oct 17 2017 319 | 10:00 AM, PDT ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please click to RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. RSVP here: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours. 320 | 321 | NOTE: Congressman will not be in attendance.",2017-08-31 23:10:18.025144,"6132 66th Ave, Sacramento, CA 95823",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Southgate Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfEY7LYYitzC0RG7z9 322 | "Tue Oct 17 2017 323 | 10:00 AM, PDT ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please click to RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. RSVP here: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours. 324 | 325 | NOTE: Congressman will not be in attendance.",2017-08-31 23:10:18.031569,"6132 66th Ave, Sacramento, CA 95823",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Southgate Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfEY7LYYitzC0RG7z9 326 | "Tue Oct 17 2017 327 | 1:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 328 | 329 | *Note* 330 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 331 | - Congressman will not be present.",2017-08-31 23:10:18.037365,"1151 GA-53 Spur, Calhoun, GA 30701",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,"Georgia Northwestern Technical College ? Gordon County Campus Building 400, Room 4-103 ",[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAfYHBvS9DtkS9uB_p 332 | "Wed Oct 18 2017 333 | 6:00 PM ",There are no notes for this event.,2017-08-31 23:10:18.042976,Utah,,"Mike Lee (Republican) Utah, Senate",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Tele-Town Hall'],[],https://resistancenearme.org/event.html?eid=-Kgq4mgNvh-hVoTW3qfx 334 | "Wed Oct 18 2017 335 | 6:00 PM, America/Denver ",There are no notes for this event.,2017-08-31 23:10:18.049947,Utah,,"Mike Lee (Republican) Utah, Senate",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Tele-Town Hall'],[],https://resistancenearme.org/event.html?eid=-Kgq4mgNvh-hVoTW3qfx 336 | "Fri Oct 20 2017 337 | 8:00 AM, America/New_York ",There are no notes for this event.,2017-08-31 23:10:18.059275,"251 Exchange St, Athol, MA 01331",,"James McGovern (Democratic) , MA-2",Parsed https://resistancenearme.org for training data,North Quabbin Community Coalition,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=fb_146449319259169 338 | "Tue Oct 24 2017 339 | 10:00 AM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 340 | 341 | *Note* 342 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 343 | - Congressman will not be present.",2017-08-31 23:10:18.068695,"240 Constitution Blvd, Dallas, GA 30132",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,"Administrative Complex, Conference Room - 2nd floor ",[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAjKlAeMAXxdJiUJfo 344 | "Tue Oct 24 2017 345 | 10:00 AM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 346 | 347 | *Note* 348 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 349 | - Congressman will not be present.",2017-08-31 23:10:18.074271,"240 Constitution Blvd, Dallas, GA 30132",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,"Administrative Complex, Conference Room - 2nd floor ",[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAjKlAeMAXxdJiUJfo 350 | "Tue Oct 24 2017 351 | 10:00 AM, PDT ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please click to RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. RSVP here: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours. 352 | 353 | NOTE: Congressman will not be in attendance.",2017-08-31 23:10:18.080466,"11601 Fair Oaks Blvd, Fair Oaks, CA 95628",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Fair Oaks Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfFKPM8TzOMOS-u_pP 354 | "Tue Oct 24 2017 355 | 10:00 AM, PDT ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please click to RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. RSVP here: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours. 356 | 357 | NOTE: Congressman will not be in attendance.",2017-08-31 23:10:18.086196,"11601 Fair Oaks Blvd, Fair Oaks, CA 95628",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Fair Oaks Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfFKPM8TzOMOS-u_pP 358 | "Tue Oct 24 2017 359 | 2:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 360 | 361 | *Note* 362 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 363 | - Congressman will not be present. 364 | ",2017-08-31 23:10:18.092191,"155 Van Wert St, Buchanan, GA 30113",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,"Commissioners Office, Government Complex-Conference Room ",[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAh7AY0EUY2fbKvVmP 365 | "Tue Oct 24 2017 366 | 2:00 PM, EDT ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 367 | 368 | *Note* 369 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 370 | - Congressman will not be present. 371 | ",2017-08-31 23:10:18.098990,"155 Van Wert St, Buchanan, GA 30113",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,"Commissioners Office, Government Complex-Conference Room ",[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAh7AY0EUY2fbKvVmP 372 | "Fri, Oct 27, 2017 373 | 1:00 PM, America/New_York ",There are no notes for this event.,2017-08-31 23:10:18.104680,"621 River St, Troy, NY 12180",,Nasty Women of the North,Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Resistance Event'],[],https://resistancenearme.org/event.html?eid=6c1997c8-fef3-4f50-b132-783ac2fe1318 374 | "Sat, Oct 28 2017 375 | 12:00 PM, CDT ",There are no notes for this event.,2017-08-31 23:10:18.109829,"1802 Shepherd Dr, Houston, TX 77007",,"John Culberson (Republican) Texas, TX-7",Parsed https://resistancenearme.org for training data,Cadillac Bar,[],resistancenearme.org,['Ticketed Event'],[],https://resistancenearme.org/event.html?eid=-KsPn6v3QHr5aYvjLBSV 376 | "Tue Nov 07 2017 377 | 10:00 AM, PST ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. RSVP here: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours. 378 | 379 | NOTE: Congressman will not be present.",2017-08-31 23:10:18.116732,"6700 Auburn Blvd, Citrus Heights, CA 95621",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Sylvan Oaks Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfGq4KxwuiFRugJFAz 380 | "Tue Nov 07 2017 381 | 10:00 AM, PST ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. RSVP here: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours. 382 | 383 | NOTE: Congressman will not be present.",2017-08-31 23:10:18.122386,"6700 Auburn Blvd, Citrus Heights, CA 95621",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Sylvan Oaks Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfGq4KxwuiFRugJFAz 384 | "Wed Nov 08 2017 385 | 6:00 PM ",There are no notes for this event.,2017-08-31 23:10:18.127692,Utah,,"Mike Lee (Republican) Utah, Senate",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Tele-Town Hall'],[],https://resistancenearme.org/event.html?eid=-Kgq4tXz70_j4OelbZ2L 386 | "Wed Nov 08 2017 387 | 6:00 PM, America/Denver ",There are no notes for this event.,2017-08-31 23:10:18.135254,Utah,,"Mike Lee (Republican) Utah, Senate",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Tele-Town Hall'],[],https://resistancenearme.org/event.html?eid=-Kgq4tXz70_j4OelbZ2L 388 | "Tue Nov 14 2017 389 | 10:00 AM, EST ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 390 | 391 | *Note* 392 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 393 | - Congressman will not be present.",2017-08-31 23:10:18.141143,"71 Case Ave, Trenton, GA 30752",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Administrative Building ?Commissioners Meeting Room? ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAebk81pXTW43Mo7ne 394 | "Tue Nov 14 2017 395 | 10:00 AM, EST ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 396 | 397 | *Note* 398 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 399 | - Congressman will not be present.",2017-08-31 23:10:18.147396,"71 Case Ave, Trenton, GA 30752",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Administrative Building ?Commissioners Meeting Room? ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAebk81pXTW43Mo7ne 400 | "Tue Nov 14 2017 401 | 1:00 PM, EST ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 402 | 403 | *Note* 404 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 405 | - Congressman will not be present.",2017-08-31 23:10:18.153603,"101 S Duke St, LaFayette, GA 30728",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Courthouse Annex I ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAmkCjIRC55G6rABOQ 406 | "Tue Nov 14 2017 407 | 1:00 PM, EST ","The County Connection Program stations members of Rep. Graves? staff in counties across the 14th District in order to help constituents who are having problems with federal agencies, such as the Social Security Administration and Department of Veterans Affairs. While Rep. Graves does not attend County Connection visits, constituents will have the opportunity to meet on an individual or family basis with one of Rep. Graves' constituent service representatives, who are trained to assist with casework, questions and concerns pertaining to federal programs or policy issues. 408 | 409 | *Note* 410 | - Dates, times and locations are subject to change. Please check Congressman's website before going to a County Connection day to be sure you are aware of updates. 411 | - Congressman will not be present.",2017-08-31 23:10:18.158945,"101 S Duke St, LaFayette, GA 30728",,"Tom Graves (Republican) Georgia, GA-14",Parsed https://resistancenearme.org for training data,Courthouse Annex I ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KiAmkCjIRC55G6rABOQ 412 | "Tue Nov 21 2017 413 | 10:00 AM, PST ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. RSVP here: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours. 414 | 415 | NOTE: Congressman will not be present.",2017-08-31 23:10:18.165679,"8900 Elk Grove Blvd, Elk Grove, CA 95624",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Elk Grove Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfJTD1fza5TuTzvMna 416 | "Tue Nov 21 2017 417 | 10:00 AM, PST ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. RSVP here: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours. 418 | 419 | NOTE: Congressman will not be present.",2017-08-31 23:10:18.172814,"8900 Elk Grove Blvd, Elk Grove, CA 95624",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Elk Grove Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfJTD1fza5TuTzvMna 420 | "Wed Dec 06 2017 421 | 10:00 AM, PST ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. RSVP here: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours. 422 | 423 | NOTE: Congressman will not be present.",2017-08-31 23:10:18.181696,"8820 Greenback Ln, Orangevale, CA 95662",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Orangevale Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfJpYxWyXnaU6mYvkH 424 | "Wed Dec 06 2017 425 | 10:00 AM, PST ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. RSVP here: https://bera.house.gov/upcomingevents#rsvpforlibraryofficehours. 426 | 427 | NOTE: Congressman will not be present.",2017-08-31 23:10:18.187529,"8820 Greenback Ln, Orangevale, CA 95662",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Orangevale Branch ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfJpYxWyXnaU6mYvkH 428 | "Wed Dec 13 2017 429 | 6:00 PM ",There are no notes for this event.,2017-08-31 23:10:18.195310,Utah,,"Mike Lee (Republican) Utah, Senate",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Tele-Town Hall'],[],https://resistancenearme.org/event.html?eid=-Kgq4znsAwVuvwlLfFTE 430 | "Wed Dec 13 2017 431 | 6:00 PM, America/Denver ",There are no notes for this event.,2017-08-31 23:10:18.200842,Utah,,"Mike Lee (Republican) Utah, Senate",Parsed https://resistancenearme.org for training data,,[],resistancenearme.org,['Tele-Town Hall'],[],https://resistancenearme.org/event.html?eid=-Kgq4znsAwVuvwlLfFTE 432 | "Wed Dec 20 2017 433 | 09:00 AM, PST ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please click to RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. 434 | 435 | Note: Since Rancho Murieta is a gated community, this office hours is open to its residents only. 436 | 437 | Note: Congressman will not be present.",2017-08-31 23:10:18.206022,"14751 Poncho Conde Cir, Rancho Murieta, CA 95683",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Bookmobile ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfKPy4DHIav--3mn17 438 | "Wed Dec 20 2017 439 | 09:00 AM, PST ","My staff is available at local libraries throughout Sacramento County to better serve you. We can help veterans with backlogged benefits, assist seniors with Social Security and Medicare, stalled passports, and more. Please click to RSVP if you'd like to attend, or call (916) 635 0505 to see how you can get help right away. 440 | 441 | Note: Since Rancho Murieta is a gated community, this office hours is open to its residents only. 442 | 443 | Note: Congressman will not be present.",2017-08-31 23:10:18.211579,"14751 Poncho Conde Cir, Rancho Murieta, CA 95683",,"Ami Bera (Democratic) California, CA-7",Parsed https://resistancenearme.org for training data,SPL - Bookmobile ,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-KlfKPy4DHIav--3mn17 444 | "Fri, Jul 28, 2017 445 | 08:00 AM, G ",There are no notes for this event.,2017-08-31 23:10:18.220529,"100 N Main St, Tonopah, NV 89049",,"Ruben Kihuen (Democratic) Nevada, NV-4",Parsed https://resistancenearme.org for training data,Mizpah Hotel,[],resistancenearme.org,['Office Hours'],[],https://resistancenearme.org/event.html?eid=-Kq4kyfDSHAGu_QjFiJb 446 | --------------------------------------------------------------------------------