It's much easier to make a request for
https://quote-feed.zacks.com/index.php?t=AAPL
and parse the JSON
import requests
response = requests.get(url="https://quote-feed.zacks.com/index.php?t=AAPL")
data = response.json()
print(data)
print(data['AAPL']['source']['sungard']['market_cap'])
Output:
{'AAPL': {'source': {'sungard': {'bidasksize': '400x400', 'dividend_freq': '4', 'prev_close_date': '01/24/2022 12:33:03', 'timestamp': '16:00', 'exchange': 'NASDAQ', 'shares': '', 'volatility': '1.2', 'zacks_recommendation': '', 'pos_size': '100', 'open': '160.02', 'yrlow': '116.21', 'type': 'S', 'yield': '.54', 'market_cap': '2542608189860', 'ask': '155.68', 'dividend': '.22', 'dividend_date': '11/11/2021 00:00:00', 'earnings': '5.62', 'close': '162.41', 'day_low': '154.7', 'last_trade_datetime': '01/24/2022 12:33:03', 'volume': '122848856', 'yrhigh': '182.94', 'day_high': '161.08', 'bid': '155.66', 'name': 'Apple Inc.', 'pe_ratio': '27.93', 'updated': '01/24/2022 12:33:03'}, 'bats': {'ask_size': '204', 'routed': '373038', 'last_trade_datetime': '01/24/2022 12:50:03', 'matched': '6404811', 'bid_size': '300', 'net_pct_change': 'NULL', 'updated': '01/24/2022 12:50:05', 'end_mkt_day_price': 'NULL', 'ask_price': '156.81', 'bid_price': '156.79', 'last': '174.41', 'pre_after_updated': '', 'net_price_change': 'NULL', 'pre_after_price': '', 'net_change': 'NULL'}, 'pre': {'after_percent_net_change': '-.13', 'after_net_change': '12/19/2017 19:58:07'}}, 'exchange': 'Real Time Quote from BATS', 'dividend_yield': '.54', 'ticker': 'AAPL', 'last': '156.8', 'ticker_type': 'S', 'zacks_rank_text': 'Hold', 'volume': '80981192', 'updated': 'Jan 24, 2022 12:50 PM', 'percent_net_change': '-3.454', 'zacks_rank': '3', 'name': 'Apple Inc.', 'net_change': '-5.61', 'market_time': '', 'previous_close': '162.41', 'SUNGARD_BID': '115.3', 'SUNGARD_YRLOW': '70.51', 'SUNGARD_EARNINGS': '.47', 'SUNGARD_VOLATILITY': '13-NOV-2014', 'SUNGARD_PE_RATIO': '6.45', 'SUNGARD_DAY_LOW': '1.64', 'SUNGARD_MARKET_CAP': '112.75', 'FEED_NET_CHANGE': '26-SEP-2014', 'BATS_PRE_AFTER_UPDATED': '02-DEC-2014', 'SUNGARD_YRHIGH': '119.75', 'SUNGARD_DIVIDEND_FREQ': '000', 'SUNGARD_PREV_CLOSE_DATE': '115.48', 'BATS_ASK_PRICE': '2096014', 'SUNGARD_NAME': 'APPLE INC', 'SUNGARD_TIMESTAMP': '11:50', 'SUNGARD_VOLUME': '', 'SUNGARD_BIDASKSIZE': '13x2', 'SUNGARD_YIELD': 'Q', 'SUNGARD_DAY_HIGH': '.93', 'SUNGARD_ZACKS_RECOMMENDATION': 'S', 'SUNGARD_SHARES': '5', 'SUNGARD_DIVIDEND': '864', 'SUNGARD_DIVIDEND_DATE': '840', 'BATS_BID_SIZE': '100938', 'BATS_BID_PRICE': '520', 'BATS_LAST_TRADE_DATETIME': '99.89', 'FEED_VOLUME': '26-SEP-2014', 'BATS_ASK_SIZE': '02-DEC-2014', 'FEED_TICKER': 'AAPL', 'SUNGARD_POS_SIZE': '100', 'SUNGARD_EXCHANGE': 'NASD', 'SUNGARD_TYPE': '17.88', 'SUNGARD_LAST_TRADE_DATETIME': '02-DEC-2014', 'SUNGARD_UPDATED': '674867.19', 'BATS_ROUTED': '02-DEC-2014', 'BATS_UPDATED': '100', 'FEED_LAST': '99.88', 'FEED_PERCENT_NET_CHANGE': '115.55', 'FEED_SOURCE': '.48', 'BATS_PRE_AFTER_PRICE': '.417', 'SUNGARD_OPEN': '113.5', 'SUNGARD_CLOSE': '115.07', 'SUNGARD_ASK': '115.31', 'BATS_MATCHED': '', 'FEED_UPDATED': '34087164', 'pre_after_net_change': '', 'pre_after_percent_net_change': '', 'pe_f1': '27.93', 'ap_short_name': 'Apple', 'ticker_market_status': 'OPEN PRICES', 'market_status': 'Full Trading Day (Market Open)', 'company_short_name': 'Apple', 'previous_close_date': '01/21/2022'}}
2542608189860
And don't use python2.7 it is not supported as of 2 years ago
EDIT: hm, strange the market_cap from JSON is different from one displayed on the site...
EDIT2: The market cap on the site is calculated based on previous close, i.e.
market_cap*previous_close/ask
import requests
response = requests.get(url="https://quote-feed.zacks.com/index.php?t=AAPL")
data = response.json()
print(data)
sg = data['AAPL']['source']['sungard']
print(f"market cap: {sg['market_cap']}")
print(f"close: {sg['close']}") # or data['previous_close]
print(f"bid: {sg['ask']}")
print(f"market cap from site:: {int(sg['market_cap'])*float(sg['close'])/float(sg['ask'])/1000000000:.2f} B")