我知道在BeautifulSoup上有很多问题,但是在尝试了一些事情之后,我不知道如何解析这个HTML表中需要的数据。你知道吗
我的桌子是这样的:
<table class="W(100%) M(0)" data-test="historical-prices" data-reactid="33">
<thead data-reactid="34">
<tr class="C($tertiaryColor) Fz(xs) Ta(end)" data-reactid="35">
<th class="Ta(start) W(100px) Fw(400) Py(6px)" data-reactid="36"><span data-reactid="37">Date</span></th>
<th class="Fw(400) Py(6px)" data-reactid="38"><span data-reactid="39">Open</span></th>
<th class="Fw(400) Py(6px)" data-reactid="40"><span data-reactid="41">High</span></th>
<th class="Fw(400) Py(6px)" data-reactid="42"><span data-reactid="43">Low</span></th>
<th class="Fw(400) Py(6px)" data-reactid="44"><span data-reactid="45">Close*</span></th>
<th class="Fw(400) Py(6px)" data-reactid="46"><span data-reactid="47">Adj Close**</span></th>
<th class="Fw(400) Py(6px)" data-reactid="48"><span data-reactid="49">Volume</span></th>
</tr>
</thead>
<tbody data-reactid="50">
<tr class="BdT Bdc($seperatorColor) Ta(end) Fz(s) Whs(nw)" data-reactid="51">
<td class="Py(10px) Ta(start) Pend(10px)" data-reactid="52"><span data-reactid="53">Oct 10, 2019</span></td>
<td class="Py(10px) Pstart(10px)" data-reactid="54"><span data-reactid="55">2,918.55</span></td>
<td class="Py(10px) Pstart(10px)" data-reactid="56"><span data-reactid="57">2,948.46</span></td>
<td class="Py(10px) Pstart(10px)" data-reactid="58"><span data-reactid="59">2,917.12</span></td>
<td class="Py(10px) Pstart(10px)" data-reactid="60"><span data-reactid="61">2,938.13</span></td>
<td class="Py(10px) Pstart(10px)" data-reactid="62"><span data-reactid="63">2,938.13</span></td>
<td class="Py(10px) Pstart(10px)" data-reactid="64"><span data-reactid="65">3,217,250,000</span></td>
</tr>
<tr class="BdT Bdc($seperatorColor) Ta(end) Fz(s) Whs(nw)" data-reactid="66">
<td class="Py(10px) Ta(start) Pend(10px)" data-reactid="67"><span data-reactid="68">Oct 09, 2019</span></td>
<td class="Py(10px) Pstart(10px)" data-reactid="69"><span data-reactid="70">2,911.10</span></td>
<td class="Py(10px) Pstart(10px)" data-reactid="71"><span data-reactid="72">2,929.32</span></td>
<td class="Py(10px) Pstart(10px)" data-reactid="73"><span data-reactid="74">2,907.41</span></td>
<td class="Py(10px) Pstart(10px)" data-reactid="75"><span data-reactid="76">2,919.40</span></td>
<td class="Py(10px) Pstart(10px)" data-reactid="77"><span data-reactid="78">2,919.40</span></td>
<td class="Py(10px) Pstart(10px)" data-reactid="79"><span data-reactid="80">2,726,820,000</span></td>
</tr>
</table>
我想从列“Adj Close”中提取数据。
我遇到的问题是所有<td>
类属性都有相同的值。你知道吗
如何提取“Adj Close”列中的所有数据?你知道吗
以下是我目前的代码:
import pandas as pd
import numpy as np
raw_html = simple_get('https://finance.yahoo.com/quote/%5EGSPC/history?p=%5EGSPC')
soup = BeautifulSoup(raw_html, 'html.parser')
table = soup.find("table", attrs={'class':'W(100%) M(0)'})
stock_history_list=[]
try:
for row in table.find_all('tr'):
cols = row.find_all('td')
print(cols)
if len(cols) > 0:
stock_history_list.append(cols[5].text.strip())
except: pass
stock_history_array = np.asarray(stock_history_list)
df = pd.DataFrame(stock_history_array)
您可以将HTML转换为词典列表,以便快速查找:
或者,使用
pandas
:输出:
您可以使用nth类型(如果您知道index,那么指定direct,或者我将演示如何基于头来获取它)。使用bs4.7.1+
相关问题 更多 >
编程相关推荐