Web抓取提取Javascript表Selenium+Python

2024-10-05 14:23:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我读过几篇关于网络抓取的文章,但我不明白如何在网站中找到元素。在

我要废弃表的站点如下: http://www.bmfbovespa.com.br/pt_br/servicos/market-data/cotacoes/mercado-de-derivativos/?symbol=DI1

我想废弃这些表:“TB01”、“TB02、TB03和TB04”这些是表的ID

<tbody> == $0
  <tr>
    <td id="TB01">...</td>
    <td id="TB02">...</td>
    <td id="TB03">...</td>
    <td id="TB04">...</td>
  <tr>

我已经尝试过Selenium库的所有find.element函数,但是没有一个有效。在

另外,站点还有一些负载需要等待,我已经习惯了函数WebDriverWait,但是它应该与表的存在联系在一起,如果find_element不起作用,我猜WebDriverWait也不可能。在


Tags: 函数br网络id站点文章elementfind
1条回答
网友
1楼 · 发布于 2024-10-05 14:23:33

如果你分析这个网站,并且它通过chrome开发工具在后台工作,这很简单。在

在深入研究scraping之前,您需要了解web中的ajax请求。大多数网站使用ajax请求,因此,所有内容都是动态加载的。在

应遵循的步骤:

  1. 在chrome中的新选项卡中打开网站
  2. 打开chrome的开发者控制台
  3. 转到“网络”选项卡并刷新页面。当网站动态加载时,你可以看到它正在被调用。在

对于网站-http://www.bmfbovespa.com.br/pt_br/servicos/market-data/cotacoes/mercado-de-derivativos/?symbol=DI1,这是图片。在

enter image description here

您可以看到正在调用dl1api。转到标题并查看url。 现在你知道网址了。因此,使用python很容易获得数据。这是密码。在

import requests, json
text = reuqests.get("http://cotacao.b3.com.br/mds/api/v1/DerivativeQuotation/DI1").text
data = json.loads(text)
print(data['Scty'])

上述程序的输出如下

^{pr2}$

相关问题 更多 >