'Scrape the events data from all dates from the sc meetings page,
then create and yield the events objects from the data.
:param chamber:
:param session:
:return: yielded Event objects'

def scrape(self, chamber=None, session=None):

    chambers = {'upper': {'name': 'Senate', 'title': 'Senator'}, 'lower': {'name': 'House', 'title': 'Representative'}}
    if (chamber == 'other'):
        return
    if (chamber is None):
        self.info('no    chamber    specified,    using    Joint    Committee    Meeting    Schedule')
        events_url = 'http://www.scstatehouse.gov/meetings.php'
    else:
        events_url = ('http://www.scstatehouse.gov/meetings.php?chamber=%s' % chambers[chamber]['name'].upper()[0])
    page = self.get_page_from_url(events_url)
    meeting_year = page.xpath('//h2[@class="barheader"]/span')[0].text_content()
    meeting_year = re.search('Week    of    [A-Z][a-z]+\\s+[0-9]{1,2},    ([0-9]{4})', meeting_year).group(1)
    dates = page.xpath("//div[@id='contentsection']/ul")
    for date in dates:
        date_string = date.xpath('span')
        if (len(date_string) == 1):
            date_string = date_string[0].text_content()
        else:
            continue
        if (date_string.count(',') == 2):
            event_year = date_string[(-4):]
            date_string = date_string[:(-6)]
        elif (date_string.count(',') == 1):
            event_year = meeting_year
        else:
            raise AssertionError("This    is    not    a    valid    date:    '{}'").format(date_string)
        for meeting in date.xpath('li'):
            time_string = meeting.xpath('span')[0].text_content()
            if ((time_string == 'CANCELED') or (len(meeting.xpath('.//span[contains(text(),    "CANCELED")]')) > 0)):
                continue
            time_string = normalize_time(time_string)
            date_time = datetime.datetime.strptime(((((event_year + '    ') + date_string) + '    ') + time_string), '%Y    %A,    %B    %d    %I:%M    %p')
            date_time = self._tz.localize(date_time)
            meeting_info = meeting.xpath('br[1]/preceding-sibling::node()')[1]
            (location, description) = re.search('--    (.*?)    --    (.*)', meeting_info).groups()
            event = Event(name=description, start_date=date_time, location_name=location)
            event.add_source(events_url)
            agenda_url = meeting.xpath(".//a[contains(@href,'agendas')]")
            if agenda_url:
                agenda_url = agenda_url[0].attrib['href']
                event.add_source(agenda_url)
                event.add_document(note='Agenda', url=agenda_url, media_type='application/pdf')
                agenda_page = self.get_page_from_url(agenda_url)
                for bill in agenda_page.xpath(".//a[contains(@href,'billsearch.php')]"):
                    bill_id = bill.text_content().replace('.', '').replace('    ', '')
                    event.add_bill(bill_id)
            (yield event)
