Webscraping cryptocurrency
Here is an alternate implementation:

#!/usr/bin/env python3

from bs4 import BeautifulSoup
from pprint import pprint
import re
import requests


class Coins:
    table_re = re.compile('^AssetTable__Table-')

    def __init__(self, url="https://www.coinbase.com/price"):
        self.url = url
        self.session = requests.Session()

    # Check if I get a 200 status code and if so, create instance from bs4
    def _get_response(self) -&gt; BeautifulSoup:
        response = self.session.get(self.url)
        response.raise_for_status()
        return BeautifulSoup(response.text, 'lxml')

    # Select the class and get the data
    def get_data(self) -&gt; dict:
        soup = self._get_response()
        table = soup.find('table', attrs={'class': self.table_re})
        prices = {}
        for row in table.tbody.find_all('tr'):
            cells = row.find_all('td')
            if len(cells) &lt; 6:
                continue
            name = cells[1].find('h4').text
            price = cells[2].find('h4').text
            prices[name] = price
        return prices


Note:


Do not rely on long, terrible, possibly dynamically-generated CSS class names
If you want to reuse this class to repeatedly fetch prices, then the members should be the session and the URL, and the data should be restricted to the function
Don't write access granted. Other than it being corny, you should only throw an exception if there's a failure, not write to stdout if there's a success in the data retrieval method. Such progress indicators are best left to the calling function above.
Just index into the cells. Don't use the modulus.