Получить последние цены на веб-странице биржи - PullRequest
2 голосов
/ 24 апреля 2020

Я самообучаюсь по python и в настоящее время пытаюсь получить криптовалютную цену от Binance (https://www.binance.com/en/trade/LTC_USDT). Html цены показаны на следующем рисунке: изображение

код Html, показанный на изображении выше, находится здесь на веб-сайте: код местоположения

, как вы можете видеть, цена LT C (в настоящее время около 43 долларов) упоминается в двух местах в коде Html.

1-е место адрес его класса изменяется между 3 адресами в зависимости от цвета текста в зависимости от движения цены следующим образом:

Красный текст (цена снижается) >>>>> class = "s c -1p4en3j-3 s c -1p4en3j-5 jFILqo "

Зеленый текст (цена вверх) >>>>> class =" s c -1p4en3j-3 s c -1p4en3j-4 kZlsgN "

белый текст (без надписи) >>>> class = "s c -1p4en3j-3 s c -1p4en3j-6 czKdcJ"

2-е ценовое местоположение имеет адрес класса фиксированный , но содержит знак $.

Я хочу узнать цену акций и сохранить их, чтобы потом можно было делать математику с . Я попытался использовать оба текстовых местоположения, чтобы получить цену. мой код:

url= "https://www.binance.com/en/trade/LTC_USDT"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

пытался получить цену от всех классов в местоположении 1:

newprice= soup.find('span', class_ = 'sc-1p4en3j-3 sc-1p4en3j-5 jFILqo')
newprice1= soup.find('span', class_ = 'sc-1p4en3j-3 sc-1p4en3j-4 kZlsgN')
newprice2= soup.find('span', class_ = 'sc-1p4en3j-3 sc-1p4en3j-6 czKdcJ')

print (str(newprice))
print (str(newprice1))
print (str(newprice2))

, если я добавлю .text в первые три строки выше. он говорит мне: объект 'NoneType' не имеет атрибута 'text'

пытался получить его из местоположения 2:

newprice3= soup.find('span', class_ = 'sc-1p4en3j-7 eHDQUL')
print (str(newprice3))

вывод:

None
None
None
None

1 Ответ

3 голосов
/ 24 апреля 2020

Вы не можете использовать BeautifulSoup для получения цены непосредственно с веб-сайта, поскольку она генерируется с помощью javascript и обновляется через веб-сокеты. Вместо этого следует использовать бесплатный Binance API .
Вот пример получения LTCUSDT цены:

import requests
url = "https://api.binance.com/api/v3/ticker/price?symbol=LTCUSDT"
resp = requests.get(url).json()
price = resp['price']
# 43.45000000

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...