02/28/2019

Web Scraping?

  • A technique to automatically access and extract large amounts of information from a website
  • Converts information from a website to another format
  • Can be used to collect updates, progress, or initial data

Structure of HTML

<html>
  <head>
    <title>The Dormouse's story</title>
  </head>
  <body>
    <p id="story-title"><b>The Dormouse's story</b></p>
    <p class="story">
      Once upon a time there were three little sisters; and their names were
      <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
      <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
      <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
      and they lived at the bottom of a well.
    </p>
    <p>The story continues...</p>
  </body>
</html>

CSS Selectors

Selector: 'p'

<html>
 <head>
  <title>The Dormouse's story</title>
 </head>
 <body>
  <p id="story-title"><b>The Dormouse's story</b></p>
  <p class="story">
   Once upon a time there were three little sisters; and their names were
   <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
   <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
   <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
   and they lived at the bottom of a well.
  </p>
  <p>The story continues…</p>
 </body>
</html>

CSS Selectors, cont.

Selector: 'p#story-title'

<html>
 <head>
  <title>The Dormouse's story</title>
 </head>
 <body>
  <p id="story-title"><b>The Dormouse's story</b></p>
  <p class="story">
   Once upon a time there were three little sisters; and their names were
   <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
   <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
   <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
   and they lived at the bottom of a well.
  </p>
  <p>The story continues…</p>
 </body>
</html>

CSS Selectors, cont.

Selector: 'p.story'

<html>
 <head>
  <title>The Dormouse's story</title>
 </head>
 <body>
  <p id="story-title"><b>The Dormouse's story</b></p>
  <p class="story">
   Once upon a time there were three little sisters; and their names were
   <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
   <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
   <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
   and they lived at the bottom of a well.
  </p>
  <p>The story continues…</p>
 </body>
</html>

CSS Selectors, cont.

Selector: 'p.story a'

<html>
 <head>
  <title>The Dormouse's story</title>
 </head>
 <body>
  <p id="story-title"><b>The Dormouse's story</b></p>
  <p class="story">
   Once upon a time there were three little sisters; and their names were
   <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
   <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a>
and
   <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
   and they lived at the bottom of a well.
  </p>
  <p>The story continues…</p>
 </body>
</html>

CSS Selectors, cont.

Selector: 'p.story a:nth-child(2)'

<html>
 <head>
  <title>The Dormouse's story</title>
 </head>
 <body>
  <p id="story-title"><b>The Dormouse's story</b></p>
  <p class="story">
   Once upon a time there were three little sisters; and their names were
   <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
   <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
   <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
   and they lived at the bottom of a well.
  </p>
  <p>The story continues…</p>
 </body>
</html>

CSS Selectors, cont.

Selector: 'p.story + p'

<html>
 <head>
  <title>The Dormouse's story</title>
 </head>
 <body>
  <p id="story-title"><b>The Dormouse's story</b></p>
  <p class="story">
   Once upon a time there were three little sisters; and their names were
   <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
   <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
   <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
   and they lived at the bottom of a well.
  </p>
  <p>The story continues…</p>
 </body>
</html>

Web Scraping with rvest

URL Parameters

  • URL parameters start at the '?' in the web address
  • Parameters take the form of 'key=value'
  • Parameters are separated by the '&' symbol
  • Not all parameters are necessary

Step 1: A Base URL

http://tn211.mycommunitypt.com/index.php/component/cpx/index.php?task=search.query&advanced=true&geo_county=Shelby


  • Base:
    • http://tn211.mycommunitypt.com/index.php/component/cpx/index.php
  • Params:
    • task=search.query
    • advanced=true
    • geo_county=Shelby

Step 2: Pagination

211 Landing Page


#' A function that produces a URL on this web page. Useful for adding
#' additional URL parameters at need, such as page=3 by passing in
#' list(list('page', '3'))
search_url <- function(params = list(list())) {
  base_url <- 'http://tn211.mycommunitypt.com/index.php/component/cpx/index.php'
  base_params <- list(
    list('task', 'search.query'),
    list('advanced', 'true'),
    list('geo_county', 'Shelby')
  )
  url_params <- c(params, base_params)
  lapply(url_params, function(x) {paste(x, collapse = '=')}) %>% 
    paste(collapse = '&') %>% 
    paste(base_url, ., sep = '?')
}
http://tn211.mycommunitypt.com/index.php/component/cpx/index.php?task=search.query&advanced=true&geo_county=Shelby

Step 3: How Many Pages?

211 Landing Page


#' Get the URL of the landing page and read in the HTML nodes
landing_page_html <- read_html(search_url())

#' Get the maximum page count from the pagination buttons. The CSS selector
#' points to all the links inside an element with a class of 'page-links'.
page_count <- html_node(landing_page_html, 
                        '.page-links a:nth-last-child(2)') %>% 
  html_text() %>% 
  as.numeric()

page_count
## [1] 273

Step 4: Get Link HREFs

Step 5: Simple Extraction

#' Read in the HTML nodes for the second (because it's a better example) page pointed to by the 
#' link on the landing page
page_one_link_two_html <- read_html(page_one_links[[2]])

#' Get the resource name from the page. The CSS selector chooses an 'h1' element with an ID of
#' 'resource-name_top'.
page_one_link_two_name <- html_node(page_one_link_two_html,
                                    'h1#resource-name_top') %>% 
  html_text()

#' Get the resource description from the page. The CSS selector chooses the element with an ID of 
#' 'view_field_description'. The gsub function removes all newline characters.
page_one_link_two_description <- html_node(page_one_link_two_html, 
                                           '#view_field_description') %>%
  html_text() %>% 
  gsub('[\r\n]', '', .)

c(page_one_link_two_name, page_one_link_two_description)
## [1] "24/7 Crisis Text Line for TN Residents - Text TN to 741-741"                                                                                                                                                                                                                                                                                             
## [2] "Provides a 24/7 Crisis Text Line sponsored by TN Suicide Prevention Network with a national partner agency; persons (13 and older) can Text \"TN\" to 741-741 to connect with a trained counselor for support and referrals for suicidal thoughts, anxiety, depression, children and adult abuse issues, substance abuse and more anywhere in Tennessee."

Step 6: Less Simple Extraction

#' Get the labels for each phone number listed on the page. The CSS selector chooses the first 
#' 'p' element inside each element with a class of 'col-sm-4' inside an element of class 'row'
#' inside a 'div' element that follows an element with the ID of 'view_field_phonesLabel'.
page_one_link_two_phone_labels <- html_nodes(
    page_one_link_two_html,
    '#view_field_phonesLabel + div .row .col-sm-4 p:nth-child(1)'
  ) %>% 
  html_text()

#' Gets the phone numbers listed on the page. The CSS selector chooses the first 'p' element 
#' inside each element with a class of 'col-sm-8' inside an element of class 'row' inside a 'div' 
#' element that follows an element with the ID of 'view_field_phonesLabel'
page_one_link_two_phone_numbers <- html_nodes(
  page_one_link_two_html,
  '#view_field_phonesLabel + div .row .col-sm-8 p:nth-child(1)'
) %>% 
  html_text()

Step 6: Less Simple Extraction

list(page_one_link_two_phone_labels, page_one_link_two_phone_numbers)
## [[1]]
## [1] "Nationwide Suicide Hotline"                          
## [2] "Main TSPN Nashville Office (Non-Emergency Line ONLY)"
## 
## [[2]]
## [1] "(800) 273-8255" "(615) 297-1077"

Step 7: Put it Together

#' Compiles the information gathered from the page into an R list object
page_one_link_two_info <- list(
  name = page_one_link_two_name,
  description = page_one_link_two_description,
  phone_nums = mapply(list, 
                      page_one_link_two_phone_labels,
                      page_one_link_two_phone_numbers,
                      SIMPLIFY = F)
)

str(page_one_link_two_info)
## List of 3
##  $ name       : chr "24/7 Crisis Text Line for TN Residents - Text TN to 741-741"
##  $ description: chr "Provides a 24/7 Crisis Text Line sponsored by TN Suicide Prevention Network with a national partner agency; per"| __truncated__
##  $ phone_nums :List of 2
##   ..$ Nationwide Suicide Hotline                          :List of 2
##   .. ..$ : chr "Nationwide Suicide Hotline"
##   .. ..$ : chr "(800) 273-8255"
##   ..$ Main TSPN Nashville Office (Non-Emergency Line ONLY):List of 2
##   .. ..$ : chr "Main TSPN Nashville Office (Non-Emergency Line ONLY)"
##   .. ..$ : chr "(615) 297-1077"

Step 8: One Big Function

#' A function to read in the information from a page
parse_resource_page <- function(page_url) {
  resource_page_html <- read_html(page_url)
  
  name <- html_node(resource_page_html, 'h1#resource-name_top') %>% 
    html_text()
  
  description <- html_node(resource_page_html, '#view_field_description') %>%
    html_text() %>% 
    gsub('[\r\n]', '', .)
  
  phone_labels <- html_nodes(
      resource_page_html, 
      '#view_field_phonesLabel + div .row .col-sm-4 p:nth-child(1)'
    ) %>% 
    html_text()
  
  phone_numbers <- html_nodes(
      resource_page_html,
      '#view_field_phonesLabel + div .row .col-sm-8 p:nth-child(1)'
    ) %>% 
    html_text()
  
  list(
    name = name,
    description = description,
    phone_nums = tryCatch(
      mapply(list, phone_labels,phone_numbers, SIMPLIFY = F),
      error = function(e) list()
    )
  )
}

Step 9: Extract it All!

#' A function to turn a page_number into a list of links from that page
listing_page_links <- function(page_number) {
  listing_page_url <- search_url(list(list('page', page_number)))
  listing_page_html <- read_html(listing_page_url)
  
  html_nodes(listing_page_html, 'p.resource-name a') %>% 
    html_attr('href') %>% 
    paste('http://tn211.mycommunitypt.com', ., sep = '')
}

#' Collect all resource info for the first three pages of results. To retrieve
#' all pages, replace the '3' with 'page_count'.
all_resource_info <- sapply(seq_len(3), listing_page_links) %>% 
  lapply(parse_resource_page)

Step 9: Extract it All!

## List of 30
##  $ :List of 3
##   ..$ name       : chr "2-1-1 Texas"
##   ..$ description: chr "Provides 2-1-1 Texas call center number for those calling from outside the state."
##   ..$ phone_nums :List of 2
##   .. ..$ Toll Free   :List of 2
##   .. .. ..$ : chr "Toll Free"
##   .. .. ..$ : chr "(877) 541-7905"
##   .. ..$ Updates only:List of 2
##   .. .. ..$ : chr "Updates only"
##   .. .. ..$ : chr "(512) 463-5110"
##  $ :List of 3
##   ..$ name       : chr "24/7 Crisis Text Line for TN Residents - Text TN to 741-741"
##   ..$ description: chr "Provides a 24/7 Crisis Text Line sponsored by TN Suicide Prevention Network with a national partner agency; per"| __truncated__
##   ..$ phone_nums :List of 2
##   .. ..$ Nationwide Suicide Hotline                          :List of 2
##   .. .. ..$ : chr "Nationwide Suicide Hotline"
##   .. .. ..$ : chr "(800) 273-8255"
##   .. ..$ Main TSPN Nashville Office (Non-Emergency Line ONLY):List of 2
##   .. .. ..$ : chr "Main TSPN Nashville Office (Non-Emergency Line ONLY)"
##   .. .. ..$ : chr "(615) 297-1077"
##  $ :List of 3
##   ..$ name       : chr "2Unique Community Salvation Foundation - Youth Business Programs"
##   ..$ description: chr "Provides career skills programs, mini-internships and entrepreneurial opportunities for high school students an"| __truncated__
##   ..$ phone_nums :List of 1
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 489-2386"
##  $ :List of 3
##   ..$ name       : chr "AARP Fresh Savings Program - SNAP/EBT Program"
##   ..$ description: chr "Use your SNAP card to save on fresh fruits and vegetables at participating Kroger stores, farmer's markets and "| __truncated__
##   ..$ phone_nums :List of 2
##   .. ..$ West TN Contact:List of 2
##   .. .. ..$ : chr "West TN Contact"
##   .. .. ..$ : chr "(901) 267-9268"
##   .. ..$ Tollfree       :List of 2
##   .. .. ..$ : chr "Tollfree"
##   .. .. ..$ : chr "(855) 850-2525"
##  $ :List of 3
##   ..$ name       : chr "AARP TN - Driver Safety and Training"
##   ..$ description: chr "Sponsors driver-improvement program formerly known as 55 Alive."
##   ..$ phone_nums :List of 5
##   .. ..$ Toll-free TN        :List of 2
##   .. .. ..$ : chr "Toll-free TN"
##   .. .. ..$ : chr "(866) 295-7274"
##   .. ..$ Memphis             :List of 2
##   .. .. ..$ : chr "Memphis"
##   .. .. ..$ : chr "(901) 384-3581"
##   .. ..$ Toll-free Nationwide:List of 2
##   .. .. ..$ : chr "Toll-free Nationwide"
##   .. .. ..$ : chr "(888) 687-2277"
##   .. ..$ Toll-free Spanish   :List of 2
##   .. .. ..$ : chr "Toll-free Spanish"
##   .. .. ..$ : chr "(877) 342-2277"
##   .. ..$ Toll-free TTY       :List of 2
##   .. .. ..$ : chr "Toll-free TTY"
##   .. .. ..$ : chr "(877) 434-7598"
##  $ :List of 3
##   ..$ name       : chr "AARP TN - Senior Advocacy/Lobbying"
##   ..$ description: chr "AARP support the passage and enforcement of laws and other social measures that protect and promote the rights "| __truncated__
##   ..$ phone_nums :List of 6
##   .. ..$ Toll Free TN        :List of 2
##   .. .. ..$ : chr "Toll Free TN"
##   .. .. ..$ : chr "(866) 295-7274"
##   .. ..$ Memphis             :List of 2
##   .. .. ..$ : chr "Memphis"
##   .. .. ..$ : chr "(901) 384-3581"
##   .. ..$ Toll Free           :List of 2
##   .. .. ..$ : chr "Toll Free"
##   .. .. ..$ : chr "(866) 295-7274"
##   .. ..$ Toll-free Nationwide:List of 2
##   .. .. ..$ : chr "Toll-free Nationwide"
##   .. .. ..$ : chr "(888) 687-2277"
##   .. ..$ Toll-free Spanish   :List of 2
##   .. .. ..$ : chr "Toll-free Spanish"
##   .. .. ..$ : chr "(877) 342-2277"
##   .. ..$ Toll-free TTY       :List of 2
##   .. .. ..$ : chr "Toll-free TTY"
##   .. .. ..$ : chr "(877) 434-7598"
##  $ :List of 3
##   ..$ name       : chr "AARP  TN - Senior Tax Assistance Site Locater"
##   ..$ description: chr "Assists persons 50 and older in filing federal income tax forms during Feb 1-April 15 of each year. For an AARP"| __truncated__
##   ..$ phone_nums :List of 6
##   .. ..$ AARP Tax Site Locater (available at the end of January):List of 2
##   .. .. ..$ : chr "AARP Tax Site Locater (available at the end of January)"
##   .. .. ..$ : chr "(888) 227-7669"
##   .. ..$ Memphis                                                :List of 2
##   .. .. ..$ : chr "Memphis"
##   .. .. ..$ : chr "(901) 384-3581"
##   .. ..$ Toll-free Nationwide                                   :List of 2
##   .. .. ..$ : chr "Toll-free Nationwide"
##   .. .. ..$ : chr "(888) 687-2277"
##   .. ..$ Toll-free Spanish                                      :List of 2
##   .. .. ..$ : chr "Toll-free Spanish"
##   .. .. ..$ : chr "(877) 342-2277"
##   .. ..$ Toll Free TN                                           :List of 2
##   .. .. ..$ : chr "Toll Free TN"
##   .. .. ..$ : chr "(866) 295-7274"
##   .. ..$ Toll-free TTY                                          :List of 2
##   .. .. ..$ : chr "Toll-free TTY"
##   .. .. ..$ : chr "(877) 434-7598"
##  $ :List of 3
##   ..$ name       : chr "A Better Memphis"
##   ..$ description: chr "Provides annual outdoor event in Raleigh to promote peace and community involvement in the fall called the Bloc"| __truncated__
##   ..$ phone_nums :List of 2
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 379-9101"
##   .. ..$ Fax :List of 2
##   .. .. ..$ : chr "Fax"
##   .. .. ..$ : chr "(901) 382-6425"
##  $ :List of 3
##   ..$ name       : chr "Access from AT&T - Low Cost Home Internet Service"
##   ..$ description: chr "Provides low-cost home Internet service to qualifying households participating in the SNAP program; this is a f"| __truncated__
##   ..$ phone_nums :List of 1
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(855) 220-5211"
##  $ :List of 3
##   ..$ name       : chr "Access Wireless - Lifeline Free Cell Phone Service"
##   ..$ description: chr "Lifeline is a government sponsored program that provides a free phone and 250 minutes per month for individuals"| __truncated__
##   ..$ phone_nums :List of 3
##   .. ..$ Toll Free                     :List of 2
##   .. .. ..$ : chr "Toll Free"
##   .. .. ..$ : chr "(800) 464-6010"
##   .. ..$ Toll Free - Existing Customers:List of 2
##   .. .. ..$ : chr "Toll Free - Existing Customers"
##   .. .. ..$ : chr "(866) 594-3644"
##   .. ..$ Toll Free - New Customers     :List of 2
##   .. .. ..$ : chr "Toll Free - New Customers"
##   .. .. ..$ : chr "(888) 900-5899"
##  $ :List of 3
##   ..$ name       : chr "Advance Memphis - Work Life Program"
##   ..$ description: chr "Provides a faith-based 7 week job training program (Work Life) focused on residents of zip codes 38106 and 3812"| __truncated__
##   ..$ phone_nums :List of 2
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 543-8525"
##   .. ..$ Fax :List of 2
##   .. .. ..$ : chr "Fax"
##   .. .. ..$ : chr "(901) 207-3002"
##  $ :List of 3
##   ..$ name       : chr "Affordable Care Act Information - Health Insurance Marketplace"
##   ..$ description: chr "NOTE: OPEN ENROLLMENT ENDED DECEMBER 15, 2018, but certain persons may apply all year round if their life situa"| __truncated__
##   ..$ phone_nums :List of 3
##   .. ..$ Main Tollfree         :List of 2
##   .. .. ..$ : chr "Main Tollfree"
##   .. .. ..$ : chr "(800) 318-2596"
##   .. ..$ Main TTY/TDD          :List of 2
##   .. .. ..$ : chr "Main TTY/TDD"
##   .. .. ..$ : chr "(855) 889-4325"
##   .. ..$ Small Business Hotline:List of 2
##   .. .. ..$ : chr "Small Business Hotline"
##   .. .. ..$ : chr "(800) 706-7893"
##  $ :List of 3
##   ..$ name       : chr "Africa in April Cultural Awareness Festival"
##   ..$ description: chr "Organizes annual cultural awareness festival in downtown Memphis in April held at Robert R. Church Park (at int"| __truncated__
##   ..$ phone_nums :List of 5
##   .. ..$ Main            :List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 947-2133"
##   .. ..$ Acey home       :List of 2
##   .. .. ..$ : chr "Acey home"
##   .. .. ..$ : chr "(901) 785-2542"
##   .. ..$ David Acey Cell :List of 2
##   .. .. ..$ : chr "David Acey Cell"
##   .. .. ..$ : chr "(901) 315-7508"
##   .. ..$ Fax             :List of 2
##   .. .. ..$ : chr "Fax"
##   .. .. ..$ : chr "(901) 947-2414"
##   .. ..$ Yvonne Acey cell:List of 2
##   .. .. ..$ : chr "Yvonne Acey cell"
##   .. .. ..$ : chr "(901) 569-9047"
##  $ :List of 3
##   ..$ name       : chr "African American International Museum Foundation"
##   ..$ description: chr "Provides museum about buffalo soldiers, black inventors, and Women's Army Air Corps (WACs), Tuskegee Airmen, Af"| __truncated__
##   ..$ phone_nums :List of 1
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 502-2326"
##  $ :List of 3
##   ..$ name       : chr "Agape Child and Family Services - Memphis - Adoption Services"
##   ..$ description: chr "Arranges adoptions and provides post-adoption counseling and support, case management, holistic services, educa"| __truncated__
##   ..$ phone_nums :List of 1
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 323-3600"
##  $ :List of 3
##   ..$ name       : chr "Agape Child and Family Services - Memphis - Christian Counseling Services"
##   ..$ description: chr "Provides individual, premarital, marriage and family counseling with licensed Christian therapists."
##   ..$ phone_nums :List of 1
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 323-3600"
##  $ :List of 3
##   ..$ name       : chr "Agape Child and Family Services - Memphis - Foster Care"
##   ..$ description: chr "Provides counseling to keep families together in the home by offering alternatives to foster care. Also arrange"| __truncated__
##   ..$ phone_nums :List of 1
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 323-3600"
##  $ :List of 3
##   ..$ name       : chr "Agape Child and Family Services - Memphis - Transitional Housing for Pregnant Women - FIT Program"
##   ..$ description: chr "Families in Transitional (FIT) housing includes life skills and parenting classes, counseling, mentoring, and c"| __truncated__
##   ..$ phone_nums :List of 1
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 323-3600"
##  $ :List of 3
##   ..$ name       : chr "Aging Commission of the Mid-South - Aging Information/Assistance & Senior Handbook"
##   ..$ description: chr "Provides information/assistance to older adults in the Mid-South area through a call center and also produces a"| __truncated__
##   ..$ phone_nums :List of 1
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 222-4111"
##  $ :List of 3
##   ..$ name       : chr "Aging Commission of the Mid-South - Caregiver Education/Training Referrals"
##   ..$ description: chr "Provides referrals to senior caregiver education/training and support groups for persons in Fayette, Lauderdale"| __truncated__
##   ..$ phone_nums :List of 1
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 222-4111"
##  $ :List of 3
##   ..$ name       : chr "Aging Commission of the Mid-South - CHOICES - Statewide Waiver Program"
##   ..$ description: chr "Provides an alternative to nursing home admission for adults who meet financial and medical eligibility for Med"| __truncated__
##   ..$ phone_nums :List of 4
##   .. ..$ Main                            :List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 222-4111"
##   .. ..$ Fax                             :List of 2
##   .. .. ..$ : chr "Fax"
##   .. .. ..$ : chr "(901) 222-4198"
##   .. ..$ TN Commission on Aging          :List of 2
##   .. .. ..$ : chr "TN Commission on Aging"
##   .. .. ..$ : chr "(615) 741-2056"
##   .. ..$ Toll Free TN Commission on Aging:List of 2
##   .. .. ..$ : chr "Toll Free TN Commission on Aging"
##   .. .. ..$ : chr "(866) 836-6678"
##  $ :List of 3
##   ..$ name       : chr "Aging Commission of the Mid-South - Fans for Seniors/Persons w/Disabilities"
##   ..$ description: chr "Provides box fans, when available in season, to eligible seniors (65 and older) and people with disabilities in"| __truncated__
##   ..$ phone_nums :List of 1
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 222-4111"
##  $ :List of 3
##   ..$ name       : chr "Aging Commission of the Mid-South/MIFA - Home-Delivered Meals & Congregate Meals"
##   ..$ description: chr "Provides home delivered meals and congregate meals for adults 60 and older in Shelby County who may have proble"| __truncated__
##   ..$ phone_nums :List of 3
##   .. ..$ To apply for Home Delivered Meals (apply through Aging Commission):List of 2
##   .. .. ..$ : chr "To apply for Home Delivered Meals (apply through Aging Commission)"
##   .. .. ..$ : chr "(901) 222-4111"
##   .. ..$ Alternate Aging Commission Phone                                  :List of 2
##   .. .. ..$ : chr "Alternate Aging Commission Phone"
##   .. .. ..$ : chr "(901) 222-4110"
##   .. ..$ Main MIFA Meals Contact                                           :List of 2
##   .. .. ..$ : chr "Main MIFA Meals Contact"
##   .. .. ..$ : chr "(901) 529-4567"
##  $ :List of 3
##   ..$ name       : chr "Aging Commission of the Mid-South - Public Guardianship/Conservatorship Program"
##   ..$ description: chr "Provides public guardianship and conservatorship program for residents in Fayette, Lauderdale, Shelby and Tipton counties."
##   ..$ phone_nums :List of 1
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 222-4180"
##  $ :List of 3
##   ..$ name       : chr "Aging Commission of the Mid-South - Respite Care for Senior Caregivers"
##   ..$ description: chr "Provides respite care for caregivers of senior citizens in Fayette, Lauderdale, Shelby and Tipton counties and "| __truncated__
##   ..$ phone_nums :List of 1
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 222-4111"
##  $ :List of 3
##   ..$ name       : chr "Aging Commission of the Mid-South - SHIP - Medicare Information & Counseling"
##   ..$ description: chr "Provides free and objective information and counseling about Medicare and related health insurance issues; prov"| __truncated__
##   ..$ phone_nums :List of 3
##   .. ..$ Main     :List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 222-4106"
##   .. ..$ Alternate:List of 2
##   .. .. ..$ : chr "Alternate"
##   .. .. ..$ : chr "(901) 222-4111"
##   .. ..$ Tollfree :List of 2
##   .. .. ..$ : chr "Tollfree"
##   .. .. ..$ : chr "(866) 836-6678"
##  $ :List of 3
##   ..$ name       : chr "Aging Commission of the Mid-South - SNAP Application Assistance for Seniors"
##   ..$ description: chr "Provides assistance in applying for SNAP or food stamps to persons over the age of 60.  Can also assist with am"| __truncated__
##   ..$ phone_nums :List of 3
##   .. ..$ Main                                 :List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 222-4100"
##   .. ..$ Aging Programs Information & Referral:List of 2
##   .. .. ..$ : chr "Aging Programs Information & Referral"
##   .. .. ..$ : chr "(901) 222-4111"
##   .. ..$ Fax                                  :List of 2
##   .. .. ..$ : chr "Fax"
##   .. .. ..$ : chr "(901) 222-4199"
##  $ :List of 3
##   ..$ name       : chr "Agricenter International"
##   ..$ description: chr "Agricenter International is a non-profit 1000 acre farm dedicated to agricultural research, education, and cons"| __truncated__
##   ..$ phone_nums :List of 2
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 757-7777"
##   .. ..$ Fax :List of 2
##   .. .. ..$ : chr "Fax"
##   .. .. ..$ : chr "(901) 757-7783"
##  $ :List of 3
##   ..$ name       : chr "Air Force Association - Memphis Chapter #336"
##   ..$ description: chr "Provides Memphis chapter of national Air Force association which promotes air power for national defense, suppo"| __truncated__
##   ..$ phone_nums :List of 3
##   .. ..$ Main                          :List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 236-7784"
##   .. ..$ National Tollfree Information :List of 2
##   .. .. ..$ : chr "National Tollfree Information"
##   .. .. ..$ : chr "(800) 727-3337 x3"
##   .. ..$ Vice President - Jim Thomasson:List of 2
##   .. .. ..$ : chr "Vice President - Jim Thomasson"
##   .. .. ..$ : chr "(901) 813-6477"
##  $ :List of 3
##   ..$ name       : chr "Al-Anon Family Groups - Memphis Area"
##   ..$ description: chr "Provides support groups for family and friends affected by others' drinking, printed materials on alcoholism an"| __truncated__
##   ..$ phone_nums :List of 1
##   .. ..$ Main:List of 2
##   .. .. ..$ : chr "Main"
##   .. .. ..$ : chr "(901) 323-0321"

Step 10: Readability (JSON)

all_resource_info_json <- jsonlite::toJSON(all_resource_info, pretty = T)
## [
##   {
##     "name": ["2-1-1 Texas"],
##     "description": ["Provides 2-1-1 Texas call center number for those calling from outside the state."],
##     "phone_nums": {
##       "Toll Free": [
##         ["Toll Free"],
##         ["(877) 541-7905"]
##       ],
##       "Updates only": [
##         ["Updates only"],
##         ["(512) 463-5110"]
##       ]
##     }
##   },
##   {
##     "name": ["24/7 Crisis Text Line for TN Residents - Text TN to 741-741"],
##     "description": ["Provides a 24/7 Crisis Text Line sponsored by TN Suicide Prevention Network with a national partner agency; persons (13 and older) can Text \"TN\" to 741-741 to connect with a trained counselor for support and referrals for suicidal thoughts, anxiety, depression, children and adult abuse issues, substance abuse and more anywhere in Tennessee."],
##     "phone_nums": {
##       "Nationwide Suicide Hotline": [
##         ["Nationwide Suicide Hotline"],
##         ["(800) 273-8255"]
##       ],
##       "Main TSPN Nashville Office (Non-Emergency Line ONLY)": [
##         ["Main TSPN Nashville Office (Non-Emergency Line ONLY)"],
##         ["(615) 297-1077"]
##       ]
##     }
##   },
##   {
##     "name": ["2Unique Community Salvation Foundation - Youth Business Programs"],
##     "description": ["Provides career skills programs, mini-internships and entrepreneurial opportunities for high school students and young adults.  Find Your Design Program includes resume preparation, summer internships in retail settings, networking opportunities, programs with local business leaders and the ability to earn experiential learning credits upon graduation.  Persons in need of clothing can redeem vouchers from local social service agencies for clothing from the store."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 489-2386"]
##       ]
##     }
##   },
##   {
##     "name": ["AARP Fresh Savings Program - SNAP/EBT Program"],
##     "description": ["Use your SNAP card to save on fresh fruits and vegetables at participating Kroger stores, farmer's markets and other sites in MS and TN.  This program allows SNAP (Food Stamp) recipients who spend up to $10.00 on fresh fruits and vegetables with their SNAP card at participating Kroger stores and up to $20.00 at some farmer's markets and other sites, to receive coupons or tokens to spend on future visits on fresh fruits and vegetables. Participants must use their Kroger Loyalty card (free at the store) for the program to work.SNAP customers who spend up to $10.00 on fresh fruits and vegetables with their SNAP card at certain Kroger stores will receive a Fresh Savings coupon for half off their next purchase of fresh fruits and vegetables (up to a $10.00 value).  A maximum of two coupons are allowed per SNAP household, per month.SNAP customers who spend up to $20.00 on fresh fruits and vegetables with their SNAP card at certain Farmer's markets and other select locations will get the same amount in Fresh Savings tokens to spend on fresh fruits and vegetables.  See website for a list of stores and farmer's markets in your area that give out the tokens or coupons.  Fresh Savings programs are available in Tennessee and Mississippi.Staff may be able to offer a free one hour tour at local grocery stores to help consumers find fresh food on a budget."],
##     "phone_nums": {
##       "West TN Contact": [
##         ["West TN Contact"],
##         ["(901) 267-9268"]
##       ],
##       "Tollfree": [
##         ["Tollfree"],
##         ["(855) 850-2525"]
##       ]
##     }
##   },
##   {
##     "name": ["AARP TN - Driver Safety and Training"],
##     "description": ["Sponsors driver-improvement program formerly known as 55 Alive."],
##     "phone_nums": {
##       "Toll-free TN": [
##         ["Toll-free TN"],
##         ["(866) 295-7274"]
##       ],
##       "Memphis": [
##         ["Memphis"],
##         ["(901) 384-3581"]
##       ],
##       "Toll-free Nationwide": [
##         ["Toll-free Nationwide"],
##         ["(888) 687-2277"]
##       ],
##       "Toll-free Spanish": [
##         ["Toll-free Spanish"],
##         ["(877) 342-2277"]
##       ],
##       "Toll-free TTY": [
##         ["Toll-free TTY"],
##         ["(877) 434-7598"]
##       ]
##     }
##   },
##   {
##     "name": ["AARP TN - Senior Advocacy/Lobbying"],
##     "description": ["AARP support the passage and enforcement of laws and other social measures that protect and promote the rights and interests of older adults."],
##     "phone_nums": {
##       "Toll Free TN": [
##         ["Toll Free TN"],
##         ["(866) 295-7274"]
##       ],
##       "Memphis": [
##         ["Memphis"],
##         ["(901) 384-3581"]
##       ],
##       "Toll Free": [
##         ["Toll Free"],
##         ["(866) 295-7274"]
##       ],
##       "Toll-free Nationwide": [
##         ["Toll-free Nationwide"],
##         ["(888) 687-2277"]
##       ],
##       "Toll-free Spanish": [
##         ["Toll-free Spanish"],
##         ["(877) 342-2277"]
##       ],
##       "Toll-free TTY": [
##         ["Toll-free TTY"],
##         ["(877) 434-7598"]
##       ]
##     }
##   },
##   {
##     "name": ["AARP  TN - Senior Tax Assistance Site Locater"],
##     "description": ["Assists persons 50 and older in filing federal income tax forms during Feb 1-April 15 of each year. For an AARP site near you, call your local 2-1-1 or the toll-free AARP Tax Site locater site toward the end of January:  888-227-7669, or check the website for locations.Most AARP tax sites will see younger persons if slots are available, but give preference to seniors."],
##     "phone_nums": {
##       "AARP Tax Site Locater (available at the end of January)": [
##         ["AARP Tax Site Locater (available at the end of January)"],
##         ["(888) 227-7669"]
##       ],
##       "Memphis": [
##         ["Memphis"],
##         ["(901) 384-3581"]
##       ],
##       "Toll-free Nationwide": [
##         ["Toll-free Nationwide"],
##         ["(888) 687-2277"]
##       ],
##       "Toll-free Spanish": [
##         ["Toll-free Spanish"],
##         ["(877) 342-2277"]
##       ],
##       "Toll Free TN": [
##         ["Toll Free TN"],
##         ["(866) 295-7274"]
##       ],
##       "Toll-free TTY": [
##         ["Toll-free TTY"],
##         ["(877) 434-7598"]
##       ]
##     }
##   },
##   {
##     "name": ["A Better Memphis"],
##     "description": ["Provides annual outdoor event in Raleigh to promote peace and community involvement in the fall called the Block Party and Picnic for Peace, which includes food, kid's activities, health fair and more.  Also provides the annual Fresh Starts Community Baby Shower.  The Baby Shower event is scheduled for November at the Breathe of Life Christian Center at 3795 Frayser-Raleigh Road."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 379-9101"]
##       ],
##       "Fax": [
##         ["Fax"],
##         ["(901) 382-6425"]
##       ]
##     }
##   },
##   {
##     "name": ["Access from AT&T - Low Cost Home Internet Service"],
##     "description": ["Provides low-cost home Internet service to qualifying households participating in the SNAP program; this is a four year program, beginning in April 2016 to increase internet accessibility to home computers in under-served areas.  To be eligible, must have at least one resident who participates in the US Supplemental Nutrition Assistance Program (SNAP or Food Stamps) living in the residence; and must have an address in AT&T's 21-state service area which offers home Internet service, and must be without an outstanding debt for AT&T fixed Internet service within the last six months or outstanding debt incurred under this program."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(855) 220-5211"]
##       ]
##     }
##   },
##   {
##     "name": ["Access Wireless - Lifeline Free Cell Phone Service"],
##     "description": ["Lifeline is a government sponsored program that provides a free phone and 250 minutes per month for individuals that receive any public assistance program such as Food Stamps, Medicaid/Tenncare, Supplemental Security Income (SSI), Temporary Assistance for Needy Families (TANF), Low Income Home Energy Assistance Program (LIHEAP), National Free School Lunch, or Federal Housing/Section 8 Assistance."],
##     "phone_nums": {
##       "Toll Free": [
##         ["Toll Free"],
##         ["(800) 464-6010"]
##       ],
##       "Toll Free - Existing Customers": [
##         ["Toll Free - Existing Customers"],
##         ["(866) 594-3644"]
##       ],
##       "Toll Free - New Customers": [
##         ["Toll Free - New Customers"],
##         ["(888) 900-5899"]
##       ]
##     }
##   },
##   {
##     "name": ["Advance Memphis - Work Life Program"],
##     "description": ["Provides a faith-based 7 week job training program (Work Life) focused on residents of zip codes 38106 and 38126.  Program focuses on employment, financial literacy, computer skills, GED preparation, with help in finding jobs after training is complete.  Also sponsors a recovery class for the families and friends of participants in the program who are suffering from addiction.  Will accept ex-felons into the program."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 543-8525"]
##       ],
##       "Fax": [
##         ["Fax"],
##         ["(901) 207-3002"]
##       ]
##     }
##   },
##   {
##     "name": ["Affordable Care Act Information - Health Insurance Marketplace"],
##     "description": ["NOTE: OPEN ENROLLMENT ENDED DECEMBER 15, 2018, but certain persons may apply all year round if their life situation changes.  Provides a consumer-based website and 24/7 call center to answer questions about the upcoming health care reform under the Affordable Care Act, designed to provide more insurance coverage for US residents.  The states of TN and MS have opted not to open their own state health insurance exchange, so residents of these states will enroll through this federal government website.   When Open Enrollment ends in December, there will be some exceptions for certain categories of people to enroll at that time, including losing your current health insurance coverage, becoming pregnant or other life changes.  See website or call for details on eligibility.  Click on GET COVERAGE, AND THEN: LOCAL HELP and choose ASSISTERS on the website to find free local in-person assistance in signing up for health care."],
##     "phone_nums": {
##       "Main Tollfree": [
##         ["Main Tollfree"],
##         ["(800) 318-2596"]
##       ],
##       "Main TTY/TDD": [
##         ["Main TTY/TDD"],
##         ["(855) 889-4325"]
##       ],
##       "Small Business Hotline": [
##         ["Small Business Hotline"],
##         ["(800) 706-7893"]
##       ]
##     }
##   },
##   {
##     "name": ["Africa in April Cultural Awareness Festival"],
##     "description": ["Organizes annual cultural awareness festival in downtown Memphis in April held at Robert R. Church Park (at internationally famous Beale and 4th), focusing on history, culture, diversity, education, economics, musicology, cuisines, fine and creative arts, and local, state, national and international affairs from an Afro-centric perspective.  2019 festival is scheduled for April 17-21, 2019 and honors Nigeria (the portion of the festival that is held in the park runs from April 19-21st only)."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 947-2133"]
##       ],
##       "Acey home": [
##         ["Acey home"],
##         ["(901) 785-2542"]
##       ],
##       "David Acey Cell": [
##         ["David Acey Cell"],
##         ["(901) 315-7508"]
##       ],
##       "Fax": [
##         ["Fax"],
##         ["(901) 947-2414"]
##       ],
##       "Yvonne Acey cell": [
##         ["Yvonne Acey cell"],
##         ["(901) 569-9047"]
##       ]
##     }
##   },
##   {
##     "name": ["African American International Museum Foundation"],
##     "description": ["Provides museum about buffalo soldiers, black inventors, and Women's Army Air Corps (WACs), Tuskegee Airmen, African-Americans in the Civil War, Cotton Jubilee, African Royalty Kinship and the Black Holocaust."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 502-2326"]
##       ]
##     }
##   },
##   {
##     "name": ["Agape Child and Family Services - Memphis - Adoption Services"],
##     "description": ["Arranges adoptions and provides post-adoption counseling and support, case management, holistic services, education, and resources for adoptive youth, their families, birth families placing or having placed a child or children up for adoption and Mid-South professionals."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 323-3600"]
##       ]
##     }
##   },
##   {
##     "name": ["Agape Child and Family Services - Memphis - Christian Counseling Services"],
##     "description": ["Provides individual, premarital, marriage and family counseling with licensed Christian therapists."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 323-3600"]
##       ]
##     }
##   },
##   {
##     "name": ["Agape Child and Family Services - Memphis - Foster Care"],
##     "description": ["Provides counseling to keep families together in the home by offering alternatives to foster care. Also arranges foster care in individual foster homes. Teaches foster parenting skills to those in the program."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 323-3600"]
##       ]
##     }
##   },
##   {
##     "name": ["Agape Child and Family Services - Memphis - Transitional Housing for Pregnant Women - FIT Program"],
##     "description": ["Families in Transitional (FIT) housing includes life skills and parenting classes, counseling, mentoring, and case management.  Provides the FIT program through the Powerlines Initiative on-site in several Memphis neighborhoods.  Seeking volunteers to tutor and mentor children whose mothers are enrolled in the program."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 323-3600"]
##       ]
##     }
##   },
##   {
##     "name": ["Aging Commission of the Mid-South - Aging Information/Assistance & Senior Handbook"],
##     "description": ["Provides information/assistance to older adults in the Mid-South area through a call center and also produces an annual Senior Handbook with resources, available for downloading from the website."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 222-4111"]
##       ]
##     }
##   },
##   {
##     "name": ["Aging Commission of the Mid-South - Caregiver Education/Training Referrals"],
##     "description": ["Provides referrals to senior caregiver education/training and support groups for persons in Fayette, Lauderdale, Shelby and Tipton counties."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 222-4111"]
##       ]
##     }
##   },
##   {
##     "name": ["Aging Commission of the Mid-South - CHOICES - Statewide Waiver Program"],
##     "description": ["Provides an alternative to nursing home admission for adults who meet financial and medical eligibility for Medicaid Long-Term Care. (CHOICES is the new name for the statewide Medicaid Waiver Program.) Services include case management, homemaker, personal care, minor home modifications, personal emergency response system, home-delivered meals, respite, and more.  Residents of Fayette, Lauderdale, Shelby and Tipton counties should call Aging Commission of the Mid-South (901-222-4111) for information on eligibility.  Residents on TennCare should contact their TennCare health plan (MCO) number on the back of their card to see if they qualify."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 222-4111"]
##       ],
##       "Fax": [
##         ["Fax"],
##         ["(901) 222-4198"]
##       ],
##       "TN Commission on Aging": [
##         ["TN Commission on Aging"],
##         ["(615) 741-2056"]
##       ],
##       "Toll Free TN Commission on Aging": [
##         ["Toll Free TN Commission on Aging"],
##         ["(866) 836-6678"]
##       ]
##     }
##   },
##   {
##     "name": ["Aging Commission of the Mid-South - Fans for Seniors/Persons w/Disabilities"],
##     "description": ["Provides box fans, when available in season, to eligible seniors (65 and older) and people with disabilities in Shelby County.  The agency will start taking requests in the middle of June and the seasonal program ends in mid-September."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 222-4111"]
##       ]
##     }
##   },
##   {
##     "name": ["Aging Commission of the Mid-South/MIFA - Home-Delivered Meals & Congregate Meals"],
##     "description": ["Provides home delivered meals and congregate meals for adults 60 and older in Shelby County who may have problems obtaining food for themselves.  Initial Screening is through the Aging Commission and is NOT dependent on income, but on the ability of an older person to obtain and prepare healthy food.  MIFA provides CONGREGATE MEALS: Provides hot meals at nutrition sites in Shelby County and  HOME-DELIVERED MEALS: Delivers one hot meal per day, five days a week or a weekly food box to qualified persons who are still able to prepare basic meals."],
##     "phone_nums": {
##       "To apply for Home Delivered Meals (apply through Aging Commission)": [
##         ["To apply for Home Delivered Meals (apply through Aging Commission)"],
##         ["(901) 222-4111"]
##       ],
##       "Alternate Aging Commission Phone": [
##         ["Alternate Aging Commission Phone"],
##         ["(901) 222-4110"]
##       ],
##       "Main MIFA Meals Contact": [
##         ["Main MIFA Meals Contact"],
##         ["(901) 529-4567"]
##       ]
##     }
##   },
##   {
##     "name": ["Aging Commission of the Mid-South - Public Guardianship/Conservatorship Program"],
##     "description": ["Provides public guardianship and conservatorship program for residents in Fayette, Lauderdale, Shelby and Tipton counties."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 222-4180"]
##       ]
##     }
##   },
##   {
##     "name": ["Aging Commission of the Mid-South - Respite Care for Senior Caregivers"],
##     "description": ["Provides respite care for caregivers of senior citizens in Fayette, Lauderdale, Shelby and Tipton counties and individual counseling if needed, for caregivers."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 222-4111"]
##       ]
##     }
##   },
##   {
##     "name": ["Aging Commission of the Mid-South - SHIP - Medicare Information & Counseling"],
##     "description": ["Provides free and objective information and counseling about Medicare and related health insurance issues; provides help in filling out applications, including quarterly workshops in Memphis and in Fayette, Lauderdale and Tipton counties for new Medicare enrollees. Also provides workshops for help with open enrollment for Medicare Part D in the fall.  Please bring your \"Medicare and You\" Handbook with you."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 222-4106"]
##       ],
##       "Alternate": [
##         ["Alternate"],
##         ["(901) 222-4111"]
##       ],
##       "Tollfree": [
##         ["Tollfree"],
##         ["(866) 836-6678"]
##       ]
##     }
##   },
##   {
##     "name": ["Aging Commission of the Mid-South - SNAP Application Assistance for Seniors"],
##     "description": ["Provides assistance in applying for SNAP or food stamps to persons over the age of 60.  Can also assist with amending applications to increase SNAP benefits if appropriate and can check on the status of SNAP applications in progress.  May be able to take the application over the phone if needed."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 222-4100"]
##       ],
##       "Aging Programs Information & Referral": [
##         ["Aging Programs Information & Referral"],
##         ["(901) 222-4111"]
##       ],
##       "Fax": [
##         ["Fax"],
##         ["(901) 222-4199"]
##       ]
##     }
##   },
##   {
##     "name": ["Agricenter International"],
##     "description": ["Agricenter International is a non-profit 1000 acre farm dedicated to agricultural research, education, and conservation. The agency educates many students in the region, and transportation scholarships are available for schools that help in getting their children to the site. 600 Acres are dedicated to agricultural field trials and production farming including cotton, soybeans, corn, sorghum, rice and wheat.Rental spaces offered include the Expo Center, an 86,000 SF exhibition space which is an ideal venue for trade shows, conventions, large equipment launches, and festivals; ShowPlace Arena, which is ideal for equestrian events, but also has a movable floor for concerts and trade shows; and the Farmer’s Market operates May through October and is open 6 days a week.  Some vendors accept the Senior Farmers Vouchers issued through the Commodities program.  The Farmer's Market barn is  available for special events during the off-season, November through April.  The RV Park has 300 sites available at a daily, weekly, or monthly rate. Transient horses stalls are available for travelers needing to board their horse.  Tenants on the property run a pay-to-fish catfish and game fish lakes.  In the spring there is a \"pick your own strawberry\" field ($5.00/quart, $15.00/gallon), and in the fall they operate a Corn Maze."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 757-7777"]
##       ],
##       "Fax": [
##         ["Fax"],
##         ["(901) 757-7783"]
##       ]
##     }
##   },
##   {
##     "name": ["Air Force Association - Memphis Chapter #336"],
##     "description": ["Provides Memphis chapter of national Air Force association which promotes air power for national defense, support for airmen and women who serve this nation, and who educates the public about the aerospace industry's role in national defense.  The Memphis Chapter covers West TN and is one of five chapters in TN.  The Memphis chapter also sponsors an annual $750.00 scholarship for a ROTC student at the University of Memphis."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 236-7784"]
##       ],
##       "National Tollfree Information": [
##         ["National Tollfree Information"],
##         ["(800) 727-3337 x3"]
##       ],
##       "Vice President - Jim Thomasson": [
##         ["Vice President - Jim Thomasson"],
##         ["(901) 813-6477"]
##       ]
##     }
##   },
##   {
##     "name": ["Al-Anon Family Groups - Memphis Area"],
##     "description": ["Provides support groups for family and friends affected by others' drinking, printed materials on alcoholism and living with alcoholics, and meetings. Website lists meeting locations in Memphis area and meetings in West and Middle TN."],
##     "phone_nums": {
##       "Main": [
##         ["Main"],
##         ["(901) 323-0321"]
##       ]
##     }
##   }
## ]

Step 10: Readability (YAML)

all_resource_info_yaml <- yaml::as.yaml(all_resource_info)
## - name: 2-1-1 Texas
##   description: Provides 2-1-1 Texas call center number for those calling from outside
##     the state.
##   phone_nums:
##     Toll Free:
##     - Toll Free
##     - (877) 541-7905
##     Updates only:
##     - Updates only
##     - (512) 463-5110
## - name: 24/7 Crisis Text Line for TN Residents - Text TN to 741-741
##   description: Provides a 24/7 Crisis Text Line sponsored by TN Suicide Prevention
##     Network with a national partner agency; persons (13 and older) can Text "TN" to
##     741-741 to connect with a trained counselor for support and referrals for suicidal
##     thoughts, anxiety, depression, children and adult abuse issues, substance abuse
##     and more anywhere in Tennessee.
##   phone_nums:
##     Nationwide Suicide Hotline:
##     - Nationwide Suicide Hotline
##     - (800) 273-8255
##     Main TSPN Nashville Office (Non-Emergency Line ONLY):
##     - Main TSPN Nashville Office (Non-Emergency Line ONLY)
##     - (615) 297-1077
## - name: 2Unique Community Salvation Foundation - Youth Business Programs
##   description: Provides career skills programs, mini-internships and entrepreneurial
##     opportunities for high school students and young adults.  Find Your Design Program
##     includes resume preparation, summer internships in retail settings, networking
##     opportunities, programs with local business leaders and the ability to earn experiential
##     learning credits upon graduation.  Persons in need of clothing can redeem vouchers
##     from local social service agencies for clothing from the store.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 489-2386
## - name: AARP Fresh Savings Program - SNAP/EBT Program
##   description: Use your SNAP card to save on fresh fruits and vegetables at participating
##     Kroger stores, farmer's markets and other sites in MS and TN.  This program allows
##     SNAP (Food Stamp) recipients who spend up to $10.00 on fresh fruits and vegetables
##     with their SNAP card at participating Kroger stores and up to $20.00 at some farmer's
##     markets and other sites, to receive coupons or tokens to spend on future visits
##     on fresh fruits and vegetables. Participants must use their Kroger Loyalty card
##     (free at the store) for the program to work.SNAP customers who spend up to $10.00
##     on fresh fruits and vegetables with their SNAP card at certain Kroger stores will
##     receive a Fresh Savings coupon for half off their next purchase of fresh fruits
##     and vegetables (up to a $10.00 value).  A maximum of two coupons are allowed per
##     SNAP household, per month.SNAP customers who spend up to $20.00 on fresh fruits
##     and vegetables with their SNAP card at certain Farmer's markets and other select
##     locations will get the same amount in Fresh Savings tokens to spend on fresh fruits
##     and vegetables.  See website for a list of stores and farmer's markets in your
##     area that give out the tokens or coupons.  Fresh Savings programs are available
##     in Tennessee and Mississippi.Staff may be able to offer a free one hour tour at
##     local grocery stores to help consumers find fresh food on a budget.
##   phone_nums:
##     West TN Contact:
##     - West TN Contact
##     - (901) 267-9268
##     Tollfree:
##     - Tollfree
##     - (855) 850-2525
## - name: AARP TN - Driver Safety and Training
##   description: Sponsors driver-improvement program formerly known as 55 Alive.
##   phone_nums:
##     Toll-free TN:
##     - Toll-free TN
##     - (866) 295-7274
##     Memphis:
##     - Memphis
##     - (901) 384-3581
##     Toll-free Nationwide:
##     - Toll-free Nationwide
##     - (888) 687-2277
##     Toll-free Spanish:
##     - Toll-free Spanish
##     - (877) 342-2277
##     Toll-free TTY:
##     - Toll-free TTY
##     - (877) 434-7598
## - name: AARP TN - Senior Advocacy/Lobbying
##   description: AARP support the passage and enforcement of laws and other social measures
##     that protect and promote the rights and interests of older adults.
##   phone_nums:
##     Toll Free TN:
##     - Toll Free TN
##     - (866) 295-7274
##     Memphis:
##     - Memphis
##     - (901) 384-3581
##     Toll Free:
##     - Toll Free
##     - (866) 295-7274
##     Toll-free Nationwide:
##     - Toll-free Nationwide
##     - (888) 687-2277
##     Toll-free Spanish:
##     - Toll-free Spanish
##     - (877) 342-2277
##     Toll-free TTY:
##     - Toll-free TTY
##     - (877) 434-7598
## - name: AARP  TN - Senior Tax Assistance Site Locater
##   description: 'Assists persons 50 and older in filing federal income tax forms during
##     Feb 1-April 15 of each year. For an AARP site near you, call your local 2-1-1
##     or the toll-free AARP Tax Site locater site toward the end of January:  888-227-7669,
##     or check the website for locations.Most AARP tax sites will see younger persons
##     if slots are available, but give preference to seniors.'
##   phone_nums:
##     AARP Tax Site Locater (available at the end of January):
##     - AARP Tax Site Locater (available at the end of January)
##     - (888) 227-7669
##     Memphis:
##     - Memphis
##     - (901) 384-3581
##     Toll-free Nationwide:
##     - Toll-free Nationwide
##     - (888) 687-2277
##     Toll-free Spanish:
##     - Toll-free Spanish
##     - (877) 342-2277
##     Toll Free TN:
##     - Toll Free TN
##     - (866) 295-7274
##     Toll-free TTY:
##     - Toll-free TTY
##     - (877) 434-7598
## - name: A Better Memphis
##   description: Provides annual outdoor event in Raleigh to promote peace and community
##     involvement in the fall called the Block Party and Picnic for Peace, which includes
##     food, kid's activities, health fair and more.  Also provides the annual Fresh
##     Starts Community Baby Shower.  The Baby Shower event is scheduled for November
##     at the Breathe of Life Christian Center at 3795 Frayser-Raleigh Road.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 379-9101
##     Fax:
##     - Fax
##     - (901) 382-6425
## - name: Access from AT&T - Low Cost Home Internet Service
##   description: Provides low-cost home Internet service to qualifying households participating
##     in the SNAP program; this is a four year program, beginning in April 2016 to increase
##     internet accessibility to home computers in under-served areas.  To be eligible,
##     must have at least one resident who participates in the US Supplemental Nutrition
##     Assistance Program (SNAP or Food Stamps) living in the residence; and must have
##     an address in AT&T's 21-state service area which offers home Internet service,
##     and must be without an outstanding debt for AT&T fixed Internet service within
##     the last six months or outstanding debt incurred under this program.
##   phone_nums:
##     Main:
##     - Main
##     - (855) 220-5211
## - name: Access Wireless - Lifeline Free Cell Phone Service
##   description: Lifeline is a government sponsored program that provides a free phone
##     and 250 minutes per month for individuals that receive any public assistance program
##     such as Food Stamps, Medicaid/Tenncare, Supplemental Security Income (SSI), Temporary
##     Assistance for Needy Families (TANF), Low Income Home Energy Assistance Program
##     (LIHEAP), National Free School Lunch, or Federal Housing/Section 8 Assistance.
##   phone_nums:
##     Toll Free:
##     - Toll Free
##     - (800) 464-6010
##     Toll Free - Existing Customers:
##     - Toll Free - Existing Customers
##     - (866) 594-3644
##     Toll Free - New Customers:
##     - Toll Free - New Customers
##     - (888) 900-5899
## - name: Advance Memphis - Work Life Program
##   description: Provides a faith-based 7 week job training program (Work Life) focused
##     on residents of zip codes 38106 and 38126.  Program focuses on employment, financial
##     literacy, computer skills, GED preparation, with help in finding jobs after training
##     is complete.  Also sponsors a recovery class for the families and friends of participants
##     in the program who are suffering from addiction.  Will accept ex-felons into the
##     program.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 543-8525
##     Fax:
##     - Fax
##     - (901) 207-3002
## - name: Affordable Care Act Information - Health Insurance Marketplace
##   description: 'NOTE: OPEN ENROLLMENT ENDED DECEMBER 15, 2018, but certain persons
##     may apply all year round if their life situation changes.  Provides a consumer-based
##     website and 24/7 call center to answer questions about the upcoming health care
##     reform under the Affordable Care Act, designed to provide more insurance coverage
##     for US residents.  The states of TN and MS have opted not to open their own state
##     health insurance exchange, so residents of these states will enroll through this
##     federal government website.   When Open Enrollment ends in December, there will
##     be some exceptions for certain categories of people to enroll at that time, including
##     losing your current health insurance coverage, becoming pregnant or other life
##     changes.  See website or call for details on eligibility.  Click on GET COVERAGE,
##     AND THEN: LOCAL HELP and choose ASSISTERS on the website to find free local in-person
##     assistance in signing up for health care.'
##   phone_nums:
##     Main Tollfree:
##     - Main Tollfree
##     - (800) 318-2596
##     Main TTY/TDD:
##     - Main TTY/TDD
##     - (855) 889-4325
##     Small Business Hotline:
##     - Small Business Hotline
##     - (800) 706-7893
## - name: Africa in April Cultural Awareness Festival
##   description: Organizes annual cultural awareness festival in downtown Memphis in
##     April held at Robert R. Church Park (at internationally famous Beale and 4th),
##     focusing on history, culture, diversity, education, economics, musicology, cuisines,
##     fine and creative arts, and local, state, national and international affairs from
##     an Afro-centric perspective.  2019 festival is scheduled for April 17-21, 2019
##     and honors Nigeria (the portion of the festival that is held in the park runs
##     from April 19-21st only).
##   phone_nums:
##     Main:
##     - Main
##     - (901) 947-2133
##     Acey home:
##     - Acey home
##     - (901) 785-2542
##     David Acey Cell:
##     - David Acey Cell
##     - (901) 315-7508
##     Fax:
##     - Fax
##     - (901) 947-2414
##     Yvonne Acey cell:
##     - Yvonne Acey cell
##     - (901) 569-9047
## - name: African American International Museum Foundation
##   description: Provides museum about buffalo soldiers, black inventors, and Women's
##     Army Air Corps (WACs), Tuskegee Airmen, African-Americans in the Civil War, Cotton
##     Jubilee, African Royalty Kinship and the Black Holocaust.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 502-2326
## - name: Agape Child and Family Services - Memphis - Adoption Services
##   description: Arranges adoptions and provides post-adoption counseling and support,
##     case management, holistic services, education, and resources for adoptive youth,
##     their families, birth families placing or having placed a child or children up
##     for adoption and Mid-South professionals.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 323-3600
## - name: Agape Child and Family Services - Memphis - Christian Counseling Services
##   description: Provides individual, premarital, marriage and family counseling with
##     licensed Christian therapists.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 323-3600
## - name: Agape Child and Family Services - Memphis - Foster Care
##   description: Provides counseling to keep families together in the home by offering
##     alternatives to foster care. Also arranges foster care in individual foster homes.
##     Teaches foster parenting skills to those in the program.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 323-3600
## - name: Agape Child and Family Services - Memphis - Transitional Housing for Pregnant
##     Women - FIT Program
##   description: Families in Transitional (FIT) housing includes life skills and parenting
##     classes, counseling, mentoring, and case management.  Provides the FIT program
##     through the Powerlines Initiative on-site in several Memphis neighborhoods.  Seeking
##     volunteers to tutor and mentor children whose mothers are enrolled in the program.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 323-3600
## - name: Aging Commission of the Mid-South - Aging Information/Assistance & Senior
##     Handbook
##   description: Provides information/assistance to older adults in the Mid-South area
##     through a call center and also produces an annual Senior Handbook with resources,
##     available for downloading from the website.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 222-4111
## - name: Aging Commission of the Mid-South - Caregiver Education/Training Referrals
##   description: Provides referrals to senior caregiver education/training and support
##     groups for persons in Fayette, Lauderdale, Shelby and Tipton counties.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 222-4111
## - name: Aging Commission of the Mid-South - CHOICES - Statewide Waiver Program
##   description: Provides an alternative to nursing home admission for adults who meet
##     financial and medical eligibility for Medicaid Long-Term Care. (CHOICES is the
##     new name for the statewide Medicaid Waiver Program.) Services include case management,
##     homemaker, personal care, minor home modifications, personal emergency response
##     system, home-delivered meals, respite, and more.  Residents of Fayette, Lauderdale,
##     Shelby and Tipton counties should call Aging Commission of the Mid-South (901-222-4111)
##     for information on eligibility.  Residents on TennCare should contact their TennCare
##     health plan (MCO) number on the back of their card to see if they qualify.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 222-4111
##     Fax:
##     - Fax
##     - (901) 222-4198
##     TN Commission on Aging:
##     - TN Commission on Aging
##     - (615) 741-2056
##     Toll Free TN Commission on Aging:
##     - Toll Free TN Commission on Aging
##     - (866) 836-6678
## - name: Aging Commission of the Mid-South - Fans for Seniors/Persons w/Disabilities
##   description: Provides box fans, when available in season, to eligible seniors (65
##     and older) and people with disabilities in Shelby County.  The agency will start
##     taking requests in the middle of June and the seasonal program ends in mid-September.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 222-4111
## - name: Aging Commission of the Mid-South/MIFA - Home-Delivered Meals & Congregate
##     Meals
##   description: 'Provides home delivered meals and congregate meals for adults 60 and
##     older in Shelby County who may have problems obtaining food for themselves.  Initial
##     Screening is through the Aging Commission and is NOT dependent on income, but
##     on the ability of an older person to obtain and prepare healthy food.  MIFA provides
##     CONGREGATE MEALS: Provides hot meals at nutrition sites in Shelby County and  HOME-DELIVERED
##     MEALS: Delivers one hot meal per day, five days a week or a weekly food box to
##     qualified persons who are still able to prepare basic meals.'
##   phone_nums:
##     To apply for Home Delivered Meals (apply through Aging Commission):
##     - To apply for Home Delivered Meals (apply through Aging Commission)
##     - (901) 222-4111
##     Alternate Aging Commission Phone:
##     - Alternate Aging Commission Phone
##     - (901) 222-4110
##     Main MIFA Meals Contact:
##     - Main MIFA Meals Contact
##     - (901) 529-4567
## - name: Aging Commission of the Mid-South - Public Guardianship/Conservatorship Program
##   description: Provides public guardianship and conservatorship program for residents
##     in Fayette, Lauderdale, Shelby and Tipton counties.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 222-4180
## - name: Aging Commission of the Mid-South - Respite Care for Senior Caregivers
##   description: Provides respite care for caregivers of senior citizens in Fayette,
##     Lauderdale, Shelby and Tipton counties and individual counseling if needed, for
##     caregivers.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 222-4111
## - name: Aging Commission of the Mid-South - SHIP - Medicare Information & Counseling
##   description: Provides free and objective information and counseling about Medicare
##     and related health insurance issues; provides help in filling out applications,
##     including quarterly workshops in Memphis and in Fayette, Lauderdale and Tipton
##     counties for new Medicare enrollees. Also provides workshops for help with open
##     enrollment for Medicare Part D in the fall.  Please bring your "Medicare and You"
##     Handbook with you.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 222-4106
##     Alternate:
##     - Alternate
##     - (901) 222-4111
##     Tollfree:
##     - Tollfree
##     - (866) 836-6678
## - name: Aging Commission of the Mid-South - SNAP Application Assistance for Seniors
##   description: Provides assistance in applying for SNAP or food stamps to persons
##     over the age of 60.  Can also assist with amending applications to increase SNAP
##     benefits if appropriate and can check on the status of SNAP applications in progress.  May
##     be able to take the application over the phone if needed.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 222-4100
##     Aging Programs Information & Referral:
##     - Aging Programs Information & Referral
##     - (901) 222-4111
##     Fax:
##     - Fax
##     - (901) 222-4199
## - name: Agricenter International
##   description: "Agricenter International is a non-profit 1000 acre farm dedicated
##     to agricultural research, education, and conservation. The agency educates many
##     students in the region, and transportation scholarships are available for schools
##     that help in getting their children to the site. 600 Acres are dedicated to agricultural
##     field trials and production farming including cotton, soybeans, corn, sorghum,
##     rice and wheat.Rental spaces offered include the Expo Center, an 86,000 SF exhibition
##     space which is an ideal venue for trade shows, conventions, large equipment launches,
##     and festivals; ShowPlace Arena, which is ideal for equestrian events, but also
##     has a movable floor for concerts and trade shows; and the Farmerâ\x80\x99s Market
##     operates May through October and is open 6 days a week.  Some vendors accept the
##     Senior Farmers Vouchers issued through the Commodities program.  The Farmer's
##     Market barn is  available for special events during the off-season, November through
##     April.  The RV Park has 300 sites available at a daily, weekly, or monthly rate.
##     Transient horses stalls are available for travelers needing to board their horse.
##     \ Tenants on the property run a pay-to-fish catfish and game fish lakes.  In the
##     spring there is a \"pick your own strawberry\" field ($5.00/quart, $15.00/gallon),
##     and in the fall they operate a Corn Maze."
##   phone_nums:
##     Main:
##     - Main
##     - (901) 757-7777
##     Fax:
##     - Fax
##     - (901) 757-7783
## - name: 'Air Force Association - Memphis Chapter #336'
##   description: Provides Memphis chapter of national Air Force association which promotes
##     air power for national defense, support for airmen and women who serve this nation,
##     and who educates the public about the aerospace industry's role in national defense.  The
##     Memphis Chapter covers West TN and is one of five chapters in TN.  The Memphis
##     chapter also sponsors an annual $750.00 scholarship for a ROTC student at the
##     University of Memphis.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 236-7784
##     National Tollfree Information:
##     - National Tollfree Information
##     - (800) 727-3337 x3
##     Vice President - Jim Thomasson:
##     - Vice President - Jim Thomasson
##     - (901) 813-6477
## - name: Al-Anon Family Groups - Memphis Area
##   description: Provides support groups for family and friends affected by others'
##     drinking, printed materials on alcoholism and living with alcoholics, and meetings.
##     Website lists meeting locations in Memphis area and meetings in West and Middle
##     TN.
##   phone_nums:
##     Main:
##     - Main
##     - (901) 323-0321

And Now… Python!

Python 1: The URL Function

# The relevant Python libraries
import json
import requests
from bs4 import BeautifulSoup
# The Python version of search_url, extra URL parameters are passed in as {'param': 'value'}
def search_url(params=dict()):
  base_url = 'http://tn211.mycommunitypt.com/index.php/component/cpx/index.php'
  base_params = dict(
    task = 'search.query',
    advanced = 'true',
    geo_county = 'Shelby'
  )
  url_params = {**params, **base_params}
  s = base_url + '?' + '&'.join("{!s}={!s}".format(k, v) for (k, v) in url_params.items())
  return(s)

Python 2: Get Link HREFs

Python 3: Extractions

# Extract the resource name
page_one_link_two_name = page_one_link_two_soup.select('h1#resource-name_top')[0].string
# Extract the resource description
page_one_link_two_description = page_one_link_two_soup.select('#view_field_description')[0].string
# Extract the resource eligibility rules
page_one_link_two_eligibility = page_one_link_two_soup.select('p#view_field_eligibility')[0].string

Python 3: Extractions, cont.

# Extract the phone number labels and compile them into a list
phone_label_selector = '#view_field_phonesLabel + div .row .col-sm-4 p:nth-child(1)'
page_one_link_two_phone_label_tags = page_one_link_two_soup.select(phone_label_selector)
page_one_link_two_phone_labels = [tag.string for tag in page_one_link_two_phone_label_tags]
# Extract the phone numbers and compile them into a list
phone_number_selector = '#view_field_phonesLabel + div .row .col-sm-8 p:nth-child(1)'
page_one_link_two_phone_number_tags = page_one_link_two_soup.select(phone_number_selector)
page_one_link_two_phone_numbers = [tag.string for tag in page_one_link_two_phone_number_tags]

Python 4: Put it Together

# Combine the extracted information into a Python object
page_one_link_two_info = dict(
  name = page_one_link_two_name,
  phone_nums = dict(zip(page_one_link_two_phone_labels,
                        page_one_link_two_phone_numbers)),
  eligibility = page_one_link_two_eligibility,
  description = page_one_link_two_description
)

Python 5: Readability (JSON)

print(json.dumps(page_one_link_two_info, indent = 2))
## {
##   "phone_nums": {
##     "Nationwide Suicide Hotline": "(800) 273-8255",
##     "Main TSPN Nashville Office (Non-Emergency Line ONLY)": "(615) 297-1077"
##   },
##   "eligibility": "Persons in crisis ages 13 and older; must have a cell phone with texting capabilities",
##   "description": "Provides a 24/7 Crisis Text Line sponsored by TN Suicide Prevention Network with a national partner agency; persons (13 and older) can Text \"TN\" to 741-741 to connect with a trained counselor for support and referrals for suicidal thoughts, anxiety, depression, children and adult abuse issues, substance abuse and more anywhere in Tennessee.",
##   "name": "24/7 Crisis Text Line for TN Residents - Text TN to 741-741"
## }

Webscraper.io