данные о ценах отсутствуют в HTML при парсинге yahoo finance для цен в реальном времени - PullRequest
0 голосов
/ 28 мая 2020

Я новичок в парсинге веб-страниц с использованием запросов и BeauryfulSoup. Я пытаюсь получить текущие цены на акции от Yahoo Finance с помощью запросов и BeautifulSoup. Я знаю, что могу использовать один из доступных API, чтобы узнать цены, но я пытаюсь узнать, как это сделать без API. Я использую браузер Chrome на машине Win 10.

Вот что я пытался получить в реальном времени цены акций на Yahoo Finance: Начните с:

запросы на импорт импорт bs4 из bs4 import BeautifulSoup

Затем создайте URL-адрес, аналогичный тому, который вы увидите на yahoo.finance, чтобы получить цены на несколько акций. Я использовал следующий код для создания URL-адреса, чтобы очистить текущие цены из базы списка акций

base_url="https://finance.yahoo.com/quotes/"
sl=['REGN','BIIB','AMD','TSLA','QQQ']
for i in sl:
    base_url=base_url+i+','
base_url    
base_url=base_url[:-1]   
base_url=base_url+'/view/v1'
base_url

Я получаю вывод:

'https://finance.yahoo.com/quotes/REGN,BIIB,AMD,TSLA,QQQ/view/v1'   

, чтобы подтвердить, что URL-адрес правильный.

Затем я использую запросы, чтобы получить html:

r = requests.get(base_url)
rh = r.content
rs = BeautifulSoup(rh, "lxml")
print(rs.prettify())

Вывод очень длинный, поэтому я не включил его здесь. Но в нем нет цен ни одной из акций, хотя их тикеры есть в выводе запросов. Когда вы проверяете HTML с помощью опции проверки на Chrome, цены явно там.

Я подозреваю, что «запросы» по какой-то причине не содержат данных о ценах в HTML он собирается, потому что yahoo использует "JS" для получения цен в реальном времени, и эта часть не включена в HTML. Однако даже в нерабочие часы я не мог получить данные о ценах в HTML. Не могли бы вы объяснить лучший способ очистки финансов Yahoo, чтобы вы могли получить всю информацию, которую вы получаете, когда «просматриваете» вывод веб-сайта Yahoo Finance в браузере chrome?

У меня есть еще несколько вопросы: - В общем, можете ли вы дать рекомендации по очистке веб-сайтов, таких как yahoo finance, чтобы получить полную отдачу?

  • 1046 *, можете ли вы использовать такую ​​функцию, как «найти» в go глубоко в HTML, чтобы добраться до «диапазона», содержащего данные, которые вы ищете, не проходя через несколько «div» для достижения «диапазона»?

  • Существуют ли команды, упрощающие поиск HTML, помимо «найти» и «найти все»?

  • Можете ли вы дать ссылку на хороший учебник или книга, охватывающая ряд уловок для поиска HTML? Спасибо за помощь

...