Очистка цены акций от Yahoo Finance с использованием Python и BeautifulSoup - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь отменить цену акций Yahoo Finance, используя Python и BeautifulSoup. Однако я не могу получить тег, имеющий указанный атрибут c «data-Reactiontid» (см. Скриншот). Пожалуйста, помогите мне.

Code:
    def getCurrentPrice(self, stockSymbol):
        #stockSymbol is : MSFT for Microsoft

        url = "https://finance.yahoo.com/quote/{}".format(stockSymbol)
        source = requests.get(url).text
        soup = BeautifulSoup(source, 'lxml')

        currentPrice = soup.find('span',attrs={"data-reactid": "52"})

        print("{} : {}".format(stockSymbol, currentPrice))

Output:

MSFT : None

#None because the span tag is not being found.

enter image description here

1 Ответ

2 голосов
/ 27 марта 2020

Атрибут data-reactid является динамическим c по своей природе, поэтому вы не можете найти элемент dom, используя его. Попробуйте это:

def getCurrentPrice(self, stockSymbol):
    #stockSymbol is : MSFT for Microsoft

    url = "https://finance.yahoo.com/quote/{}".format(stockSymbol)
    source = requests.get(url).text
    soup = BeautifulSoup(source, 'lxml')

    currentPrice = soup.find('span',attrs={"class": "Trsdu(0.3s)"})

    print("{} : {}".format(stockSymbol, currentPrice.get_text()))
...