find_all
が返されるリストが空である理由は、そのデータがそのURLにGET
リクエストを送信するだけで完了しない別の呼び出しで生成されるためです。 Chrome/Firefoxの[ネットワーク]タブを見てXHRでフィルタリングすると、各ネットワーク操作のリクエストと応答を調べることで、GET
リクエストを送信する必要があるURLを見つけることができます。この場合
我々がここで見ることができるように、それは、https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL?formatted=true&crumb=8ldhetOu7RJ&lang=en-US®ion=US&modules=defaultKeyStatistics%2CfinancialData%2CcalendarEvents&corsDomain=finance.yahoo.com
です:
だから、どのように我々はこれを再作成するのですか?シンプル! :
from bs4 import BeautifulSoup
import requests
r = requests.get('https://query2.finance.yahoo.com/v10/finance/quoteSummary/AAPL?formatted=true&crumb=8ldhetOu7RJ&lang=en-US®ion=US&modules=defaultKeyStatistics%2CfinancialData%2CcalendarEvents&corsDomain=finance.yahoo.com')
data = r.json()
これはdict
としてJSON
応答を返します。そこから、後でデータを見つけるまでdict
をナビゲートしてください:
financial_data = data['quoteSummary']['result'][0]['defaultKeyStatistics']
enterprise_value_dict = financial_data['enterpriseValue']
print(enterprise_value_dict)
>>> {'fmt': '598.56B', 'raw': 598563094528, 'longFmt': '598,563,094,528'}
print(enterprise_value_dict['fmt'])
>>> '598.56B'
これは金です!私は一般的にウェブページを廃棄するのが初めてです。近い将来、同様の質問を避けるために私に向けて指摘できるリソースはありますか? –
https://automatetheboringstuff.com/chapter11/をチェックしてください。本当に深いダイビングをしたい場合は、http://shop.oreilly.com/product/0636920034391.doをご検討ください。持っているのは素晴らしいスキルです。 – n1c9