Я пытаюсь вычистить данные со страницы статистики финансов Yahoo.
В данном случае это «Средняя дивидендная доходность за 5 лет».
Данные, которые мне нужны, имеют формат этого типа.
<tr>
<td>
<span>5 Year Average Dividend Yield</span>
</td>
<td class="Fz(s) Fw(500) Ta(end)">6.16</td>
</tr>
Я новичок в beautifulsoup и пытаюсь прочитать документацию bs4, но пока не повезло.
Я только что понял, что разбираю таблицу. (Да, я нуб).
Вот мой код. Он успешно распечатывает все строки в таблице.
Мне нужна помощь в выделении строки, которая содержит "5-летний средний дивидендный доход"
Мне просто нужно числовое значение в следующем столбце.
Заранее спасибо.
Новое редактирование: я поместил версию 0.8 ниже, которая возвращает значение "Средний доход по дивидендам за 5 лет", которое я искал.
# Version 0.8 - This worked. It got the value for "5 Year Average Dividend Yield"
# Aim: Find value for"5 Year Average Dividend Yield".
import csv, os, time
import sys
from bs4 import BeautifulSoup
import urllib
import xlsxwriter
from selenium import webdriver
from importlib import reload
file_path = "C:/temp/temp29/"
file_name = "ASX_20180621_lite.txt"
file_path_name = file_path + file_name
print(file_path_name)
# Phase 1 - place all ticker symbols into an array
tickers_phase1_arr = []
with open(file_path_name, "rt") as incsv:
readcsv = csv.reader(incsv, delimiter=',')
rownum = 0
colnum = 0
for row in readcsv:
ticker_phase1 = row[rownum]
ticker_dot_ax = ticker_phase1 + ".AX"
tickers_phase1_arr.append(ticker_dot_ax)
#print(ticker)
rownum + 1
print(tickers_phase1_arr)
# Phase 2
key_stats_on_stat = ['5 Year Average Dividend Yield']
#Initialise the browser
browser = webdriver.PhantomJS()
tickers_phase2_arr = []
data = {}
for ticker_phase2 in tickers_phase1_arr:
print(ticker_phase2)
#time.sleep(5)
#Set the main and stats url
url = "https://finance.yahoo.com/quote/{0}/key-statistics?p={0}".format(ticker_phase2)
#START - This block of code scrapes for the Previous Code value in the Main Page
browser.get(url)
# Run a script that gets all the html in the webpage that the browser got from the get request
innerHTML = browser.execute_script("return document.body.innerHTML")
#Turn innerHTML into a BeautifulSoup object to make the components easier to access for scraping
soup = BeautifulSoup(innerHTML, 'html.parser')
# Find the Previous Close value
for stat in key_stats_on_stat:
page_stat = soup.find(text=stat)
try:
page_row = page_stat.find_parent('tr')
try:
page_statnum = page_row.find_all('span')[1].contents[0]
except:
page_statnum = page_row.find_all('td')[1].contents[0]
except:
print('Invalid parent for this element')
page_statnum = "N/A"
print(page_statnum)