在Python中使用BeautifulSoup找不到HTML表

问题描述 投票:0回答:1

我一直在尝试从以下URL(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'。当我尝试使用以下代码时,我不断得到一个空列表。

import requests
from bs4 import BeautifulSoup

url = 'http://www.bmfbovespa.com.br/pt_br/servicos/market-data/consultas/mercado-de-derivativos/precos-referenciais/taxas-referenciais-bm-fbovespa/'

r = requests.get(url)
soup = BeautifulSoup(r.text,'lxml')
soup.find_all(id = 'tb_principal1')

我尝试了一些我在这里找到的解决方案,但我找不到桌子。有没有人经历过类似的事情?这可能是编码器的问题吗?

我感谢您的帮助。

python html parsing beautifulsoup
1个回答
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,您将看到一个表单元素,其中还有一个引用该页面的操作。

© www.soinside.com 2019 - 2024. All rights reserved.