soup.findAll('span')
вернет объект / элементы в ResultSet
.Вам пришлось бы перебирать их, чтобы напечатать текст.Так что попробуйте:
spans = soup.findAll('span')
for ele in spans:
data = ele.text
print(data)
Чтобы взять вывод и поместить в кадр данных:
your_output = ['Previous Close', '5.52', 'Open', '5.49', 'Bid', 'Ask', "Day's Range", '52 Week Range', 'Volume', '1,164,604', 'Avg. Volume', '660,530']
headers = your_output[::2]
data = your_output[1::2]
df = pd.DataFrame([data], columns = headers)
Дополнительно
Вы, безусловно, можете использовать BeautifulSoup дляанализировать и бросать в фрейм данных, перебирая элементы.Я хотел бы предложить альтернативу BeautifulSoup.
Pandas сделает большую часть работы за вас, если сможет идентифицировать таблицы в html, используя .read_html
.Используя эту таблицу, вы можете получить тип таблицы данных, которую вы ищете.
import pandas as pd
tables = pd.read_html(url)
df = pd.concat( [ table for table in tables ] )
Вывод:
print (df)
0 1
0 Previous Close 5.50
1 Open 5.50
2 Bid 5.47 x 0
3 Ask 5.51 x 0
4 Day's Range 5.47 - 5.51
5 52 Week Range 3.58 - 6.49
6 Volume 634191
7 Avg. Volume 675718
0 Market Cap 660.137M
1 Beta (3Y Monthly) 0.10
2 PE Ratio (TTM) 31.49
3 EPS (TTM) 0.17
4 Earnings Date NaN
5 Forward Dividend & Yield 0.15 (2.82%)
6 Ex-Dividend Date 2019-02-12
7 1y Target Est 5.17