我一直在尝试从以下网址(http://www.bmfbovespa.com.br/pt_br/servicos/market-data/consultas/mercado-de-derivativos/precos-referenciais/taxas-referenciais-bm-fbovespa/)解析HTML表格,但我无法使用find_all找到它。
该表格的id =' tb_principal1'。当我尝试使用以下代码时,我不断获得一个空列表。
Hello World!
我尝试了一些我在这里找到的解决方案,但我无法找到该表。有没有人经历过类似的事情?这可能是编码器的问题吗?
感谢您的帮助。
答案 0 :(得分:2)
快速查看后,您引用的页面中的表实际上来自不同页面的iframe - http://www2.bmf.com.br/pages/portal/bmfbovespa/lumis/lum-taxas-referenciais-bmf-ptBR.asp。如果您在该基本网址上运行相同的代码,则应获得预期的结果 -
import requests
from bs4 import BeautifulSoup
url = 'http://www2.bmf.com.br/pages/portal/bmfbovespa/lumis/lum-taxas-referenciais-bmf-ptBR.asp'
r = requests.get(url)
soup = BeautifulSoup(r.text,'lxml')
soup.find_all(id = 'tb_principal1')
输出
[<table id="tb_principal1">
<thead>
<tr>
...
</table>]
作为参考,我知道这样做的最简单方法是使用chrome页面检查器中的“sources”选项卡。如果在标准检查元素视图中查看表元素上方的几个div,您将看到一个表单元素,其中还有一个引用该页面的操作。