<p><code>BS</code>对于HTML标记很有用,但是你大部分都是文本,所以使用字符串函数,比如<code>split('\n')</code>和切片<code>[start_row:end_row]</code></p>
<p>您的HTML文本</p>
<pre><code>content = '''<body>
<pre>
BDMEP - INMET
Estação : PONTA PORA - MS (OMM: 83702)
Latitude (graus) : -22.55
Longitude (graus) : -55.71
Altitude (metros): 650.00
Estação Operante
Inicio de operação: 24/11/1941
Periodo solicitado dos dados: 01/01/2015 a 17/11/2016
Os dados listados abaixo são os que encontram-se digitados no BDMEP
Hora em UTC
Obs.: Os dados aparecem separados por ; (ponto e vírgula) no formato txt.
Para o formato planilha XLS,
<a href="instrucao.html" target="_top" rel="facebox">siga as instruções</a>
Estacao;Data;Hora;Precipitacao;TempMaxima;TempMinima;Insolacao;Evaporacao Piche;Temp Comp Media;Umidade Relativa Media;Velocidade do Vento Media;
83702;01/01/2015;0000;;;;;;;73.5;3.333333;
83702;06/01/2016;1200;5;;;;;;;;
83702;07/01/2016;0000;;;;;;;76.25;2.40072;
83702;01/02/2016;1200;15.2;;;;;;;;
</pre>
</body>'''
</code></pre>
<p>以及</p>
<pre><code>from bs4 import BeautifulSoup
soup = BeautifulSoup(content, 'html.parser')
text = soup.find('pre').text
lines = text.split('\n')
print(lines[-6:-1])
</code></pre>
<p>或者在一条线上</p>
<pre><code>print(content.split('\n')[-7:-2])
</code></pre>
<p>如果表中有更多的行,则可以搜索最后一个<code> </code>来查找表的开头</p>
<pre><code>last = content.rfind(' ')
lines = content[last:].split('\n')
print(lines[1:-2])
</code></pre>
<p>现在您可以使用<code>split(';')</code>将行拆分为列来创建熊猫的数据:)</p>
<p>或者使用<code>io.StringIO</code>在内存中创建类似文件的对象并使用<code>pd.read_csv()</code></p>
<pre><code>import pandas as pd
import io
last = content.rfind(' ')
lines = content[last:].split('\n')[1:-2]
# create one string with table
text = '\n'.join(lines)
# create file-like object with text
fileobject = io.StringIO(text)
# use file-like object with read_csv()
df = pd.read_csv(fileobject, delimiter=';')
print(df)
</code></pre>
<p>或者</p>
<pre><code>import pandas as pd
import io
start = content.rfind(' ')
start += len(' ')
end = content.rfind(' </pre>')
text = content[start:end]
fileobject = io.StringIO(text)
df = pd.read_csv(fileobject, delimiter=';')
print(df)
</code></pre>