Удаление из выпадающего меню с помощью Beautifulsoup - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь очистить список дат от: https://ca.finance.yahoo.com/quote/AAPL/options

Даты расположены в раскрывающемся меню прямо над цепочкой опций. Ранее я удалил текст с этого веб-сайта, но этот текст использует синтаксис «выбрать» и «опция». Как бы я изменил свой код, чтобы собрать этот тип текста? Я использовал много вариантов кода ниже, чтобы попытаться очистить текст, но мне не повезло.

Большое спасибо.

    import bs4
    import requests

    datesLink = ('https://ca.finance.yahoo.com/quote/AAPL/options')
    datesPage = requests.get(datesLink)
    datesSoup = BeautifulSoup(datesPage.text, 'lxml')

    datesQuote = datesSoup.find('div', {'class': 'Cf Pt(18px)controls'}).find('option').text

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

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

Однако вы МОЖЕТЕ проанализировать эти даты из исходного кода скрипта, который находится в том же файле html, используя некрасивый способ регулярных выражений. Например, это похоже на работу:

import requests, re
from datetime import *

content = requests.get('https://ca.finance.yahoo.com/quote/AAPL/options').content.decode()
match = re.search(r'"OptionContractsStore".*?"expirationDates".*?\[(.*?)\]', content)
dates = [datetime.fromtimestamp(int(x), tz=timezone.utc) for x in match.group(1).split(',')]

for d in dates:
    print(d.strftime('%Y-%m-%d'))

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

0 голосов
/ 23 апреля 2020

Вы можете просто прочитать HTML непосредственно на Pandas:


import pandas as pd
URI = 'https://ca.finance.yahoo.com/quote/AAPL/options'

df = pd.read_html(URI)[0] #[1] depending on the table you wish for
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...