Как почистить несколько цитат из Yahoo, используя Beautiflul Soup - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь вычеркнуть несколько цитат из Yahoo Finance, а не по одной за раз. Все, что меня интересует, это получение цены акций. Я искал html, который предоставляет Beautiful Soup, но я не могу найти правильный тег, который можно использовать для получения цен, да и цены нет даже в HTML. Кто-нибудь может дать мне команду Beautifulsoup, чтобы использовать ее для получения таблицы акций?
Вот URL, который я использую для тестирования. https://finance.yahoo.com/quotes/AAPL, WYNN, PCB, AMZN, Ушак / вид / v1

1 Ответ

0 голосов
/ 29 февраля 2020

Когда я использую DevTools в Chrome / Firefox для страницы

https://finance.yahoo.com/quotes/AAPL,WYNN,PCB,AMZN,USAK/view/v1 

, я вижу, что он отправляет отдельные запросы для каждого символа и использует URL-адреса, такие как

https://query1.finance.yahoo.com/v7/finance/spark?symbols=AAPL&range=1d&interval=5m&indicators=close&includeTimestamps=false&includePrePost=false&corsDomain=finance.yahoo.com&.tsrc=finance

То же самое с python работает быстро.

Я только боюсь, что могут понадобиться некоторые другие элементы - ie. куки - для предотвращения блокировки после множества запросов.

import requests

for symbol in ['AAPL', 'WYNN', 'PCB', 'AMZN', 'USAK']:
    params = {
        'symbols': symbol,
        'range': '1d',
        'interval': '5m',
        'indicators': 'close',
        'includeTimestamps': 'false',
        'includePrePost': 'false',
        'corsDomain': 'finance.yahoo.com',
        '.tsrc': 'finance'
    }

    url = 'https://query1.finance.yahoo.com/v7/finance/spark'

    r = requests.get(url, params=params)
    data = r.json()

    print('---', symbol, '---')
    print(data['spark']['result'][0]['response'][0]['indicators']['quote'][0]['close'])
...