Как очистить календарь заработков Yahoo с BeautifulSoup - PullRequest
2 голосов
/ 14 июня 2019

Как я могу очистить календарь заработков Yahoo, чтобы вытащить даты?

Это для Python 3.

from bs4 import BeautifulSoup as soup
import urllib

url = 'https://finance.yahoo.com/calendar/earnings?day=2019-06-13&symbol=ibm'

response = urllib.request.urlopen(url)
html = response.read()

page_soup = soup(html,'lxml')
table = page_soup.find('p')
print(table)

вывод "Нет"

Ответы [ 3 ]

1 голос
/ 14 июня 2019

Может быть не по теме, но так как вы хотите получить таблицу с веб-страницы, вы можете рассмотреть возможность использования панд, которые работают в две строки:

import pandas as pd
earnings = pd.read_html('https://finance.yahoo.com/calendar/earnings?day=2019-06-13&symbol=ibm')[0]
1 голос
/ 14 июня 2019

Beautiful Soup имеет некоторые функции поиска, которые вы можете использовать для проверки DOM, пожалуйста, обратитесь к документации

from bs4 import BeautifulSoup as soup
import urllib.request

url = 'https://finance.yahoo.com/calendar/earnings?day=2019-06-13&symbol=ibm'

response = urllib.request.urlopen(url)
html = response.read()

page_soup = soup(html,'lxml')
table = page_soup.find_all('td')
Dates = []
for something in table:
    try:
        if something['aria-label'] == "Earnings Date":
            Dates.append(something.text)
    except:
        print('')

print(Dates)
0 голосов
/ 14 июня 2019

Вот два кратких пути

import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://finance.yahoo.com/calendar/earnings?day=2019-06-13&symbol=ibm&guccounter=1')
soup = bs(r.content, 'lxml')
# using attribute = value selector
dates = [td.text for td in soup.select('[aria-label="Earnings Date"]')]
#using nth-of-type to get column
dates = [td.text for td in soup.select('#cal-res-table td:nth-of-type(3)')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...