Ну, причина, по которой список, который возвращает find_all
, пуст, заключается в том, что эти данные генерируются с помощью отдельного вызова, который не завершен, просто отправив запрос GET
на этот URL. Если вы просматриваете вкладку «Сеть» в Chrome/Firefox и фильтруете XHR, изучая запросы и ответы каждого сетевого действия, вы можете найти, какой URL-адрес вы должны отправить, также отправить запрос 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
, как мы можем видеть здесь:
Итак, как мы воссоздать это? Просто! :
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()
Это возвращает JSON
ответ как dict
. Оттуда перейдите через 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