def METHOD_NAME(self, response):
    """
    `parse` should always `yield` Meeting items.
    Change the `_parse_title`, `_parse_start`, etc methods to fit your scraping
    Each tentative meeting has own page. start_urls[0] is only used to get links
    for the pages.
    The links are sent to _next_meeting.
    start_urls[1] is for obtaining datetime info for past meetings.
    Then attempt to parse details page. If not status == 200, parses generic Meeting
    object with meeting date info.
    """
    if response.url == self.start_urls[0]:
        for future_meeting_href in response.css(
            "div.soi-link-item a::attr(href)"
        ).extract():
            yield response.follow(future_meeting_href, callback=self._next_meeting)
    if response.url == self.start_urls[1]:
        for past_meeting in response.css("div.link-item a"):
            past_meeting_text = past_meeting.css("*::text").extract_first()
            past_meeting_date_str = re.sub(
                r"[Mm]inute.*", "", past_meeting_text
            ).strip()
            minutes_href = past_meeting.attrib["href"]
            # Handle typo
            dt_object = datetime.datetime.strptime(
                past_meeting_date_str.replace("member", "ember"), "%B %d, %Y"
            )
            meeting_url = (
                "https://www2.illinois.gov/ilcc/Events/Pages/Board-"
                "Meeting-{0}-{1}-{2:%y}.aspx".format(
                    dt_object.month, dt_object.day, dt_object
                )
            )
            if datetime.datetime.now() - dt_object < datetime.timedelta(days=365):
                yield response.follow(
                    meeting_url,
                    callback=self._prev_meeting,
                    cb_kwargs=dict(minutes_href=minutes_href, dt_object=dt_object),
                )