我正在尝试从网页上抓取一张桌子。
<tr valign="top">
<td class="doprawej bezlewej">
AT00BUWOG001
</td>
<td class="doprawej">
P
</td>
<td class="doprawej">
</td>
<td class="doprawej">
142
</td>
<td class="doprawej">
<b>BUWOG</b>
</td>
<td class="doprawej">
124 184 779
</td>
<td class="doprawej">
16 019,84
</td>
<td class="doprawej">
12 476,29
</td>
<td class="doprawej">
2018-07-31
</td>
<td class="doprawej">
H
</td>
<td class="doprawej">
1,28
</td>
<td class="doprawej">
14,00
</td>
<td class="doprawej bezprawej">
2,30
</td>
</tr>
<tr valign="top">
<td class="doprawej bezlewej">
PLBRSTM00015
</td>
<td class="doprawej">
P
</td>
<td class="doprawej">
LA
</td>
<td class="doprawej">
180
</td>
<td class="doprawej">
<b>CALATRAVA</b>
</td>
<td class="doprawej">
15 000 000
</td>
<td class="doprawej">
3,45
</td>
<td class="doprawej">
7,93
</td>
<td class="doprawej">
2017-03-31
</td>
<td class="doprawej">
H
</td>
<td class="doprawej">
0,44
</td>
<td class="doprawej">
0,00
</td>
<td class="doprawej bezprawej">
0,00
</td>
</tr>
我尝试了熊猫read_clipboard()
但是我得到的结果是来自一列的数据最终出现在不同的列中,因为表中有一些空列。
ISIN Market Segment ... PBV PE Div Yield
0 PLNFI0600010 P LA ... 2018-12-31 H 0,14
1 PLNFI0800016 P 141 ... H 0,55 160,00
2 PL11BTS00015 P 650 ... J 9,44 22,60
3 PL4FNMD00013 P 641 ... H 1,25 6,80
4 PLABCDT00014 R 612 ... H 0,94 0,00
5 PLABMSD00015 P 411 ... 0,00 0,00 0,00
6 PLAB00000019 P 612 ... H 0,39 5,10
7 PLACSA000014 P 541 ... J 4,20 13,00
8 PLACTIN00018 P 612 ... H 0,51 0,00
9 PLADVIV00015 P 720 ... H 2,07 0,00
我可以在read_clipboard()
中设置一些属性,以便一行数据始终具有与HTML相同的长度吗?数据最终显示在右列?
答案 0 :(得分:1)
我尝试了read_html
方法,并手动添加了<table></table>
包装器。
但是您可以使用此
from BeautifulSoup import BeautifulSoup
html = "..."
soup = BeautifulSoup(html)
print soup.prettify()
这是我尝试过的:
html="""<table><tr valign="top">
<td class="doprawej bezlewej">
AT00BUWOG001
</td>
<td class="doprawej">
P
</td>
<td class="doprawej">
</td>
<td class="doprawej">
142
</td>
<td class="doprawej">
<b>BUWOG</b>
</td>
<td class="doprawej">
124 184 779
</td>
<td class="doprawej">
16 019,84
</td>
<td class="doprawej">
12 476,29
</td>
<td class="doprawej">
2018-07-31
</td>
<td class="doprawej">
H
</td>
<td class="doprawej">
1,28
</td>
<td class="doprawej">
14,00
</td>
<td class="doprawej bezprawej">
2,30
</td>
</tr>
<tr valign="top">
<td class="doprawej bezlewej">
PLBRSTM00015
</td>
<td class="doprawej">
P
</td>
<td class="doprawej">
LA
</td>
<td class="doprawej">
180
</td>
<td class="doprawej">
<b>CALATRAVA</b>
</td>
<td class="doprawej">
15 000 000
</td>
<td class="doprawej">
3,45
</td>
<td class="doprawej">
7,93
</td>
<td class="doprawej">
2017-03-31
</td>
<td class="doprawej">
H
</td>
<td class="doprawej">
0,44
</td>
<td class="doprawej">
0,00
</td>
<td class="doprawej bezprawej">
0,00
</td>
</tr></table>"""
df= pd.read_html(html, header=None)[0]
print(df)
输出为:
0 1 2 3 4 5 6 7 \
0 AT00BUWOG001 P NaN 142 BUWOG 124 184 779 16 019,84 12 476,29
1 PLBRSTM00015 P LA 180 CALATRAVA 15 000 000 345 793
8 9 10 11 12
0 2018-07-31 H 128 1400 230
1 2017-03-31 H 44 0 0
答案 1 :(得分:0)
在大熊猫source中,read_clipboard()
方法只是read_csv()
的便捷包装,这意味着您可以在方法调用中使用read_csv()
中的所有参数