Я пытаюсь очистить данные в виджете, используя python и библиотеку запросов- html.
Требуемое значение отображается на шкале со стрелкой, указывающей на пять возможных результатов. Каждая этикетка на манометре одинакова на всех страницах сайта. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу использовать селектор css на метках датчиков для извлечения текста, мне нужно извлечь значение самой стрелки, поскольку она будет указывать на метку. Стрелка не имеет текстового атрибута, поэтому, если я использую селектор css, я не получаю его в качестве ответа.
Каждая стрелка имеет уникальное имя класса.
<div class="arrow-F-uE7IX8 arrowToStrongBuy-1ydGKDOo arrowStrongBuyShudder-3xsGK8k5">
https://www.tradingview.com/symbols/NASDAQ-MDB/
StrongBuy:
<div class="arrow-F-uE7IX8 arrowToBuy-1R7d8UMJ arrowBuyShudder-3GMCnG5u">
https://www.tradingview.com/symbols/NYSE-XOM/
Buy:
<div class="arrow-F-uE7IX8 arrowToStrongSell-3UWimXJs arrowStrongSellShudder-2UJhm0_C">
https://www.tradingview.com/symbols/NASDAQ-IDEX/
StrongSell:
Что я могу сделать, чтобы получить правильное значение? Я не уверен, как я могу проверить, содержит ли селектор arrowTo { foo } и сохранить как переменную.
import pyppdf.patch_pyppeteer
from requests_html import AsyncHTMLSession
asession = AsyncHTMLSession()
async def get_page():
code = 'NASDAQ-MDB'
r = await asession.get(f'https://www.tradingview.com/symbols/{code}/')
await r.html.arender(wait=3)
return r
results = asession.run(get_page)
for result in results:
arrow_class_placeholder = "//div[contains(@class,'arrow-F-uE7IX8 arrowToStrongBuy-1ydGKDOo')]//div[1]"
arrow_class_name = result.html.xpath(arrow_class_placeholder,first=True)
if arrow_class_name == "//div[contains(@class,'arrow-F-uE7IX8 arrowToStrongBuy-1ydGKDOo')]//div[1]":
print('StrongBuy')
else:
print('not strong buy')