当我导航到 URL 并获取 TABLE 标记的内容时,它是空的

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

我正在尝试从该网站抓取数据 https://data.anbima.com.br/debentures/AALM11/agenda?page=1&size=100& 当我查看 DevTools > Elements 时,它有一个 TABLE 标签TR 和 TD 标签内的数据(日期、值等),但是当我尝试使用 Selenium 或 bs4 解析 HTML 时,数据消失了,而是我看到一个

python selenium-webdriver web-scraping beautifulsoup
1个回答
0
投票

问题在于表数据是动态加载的。当浏览器加载页面时,它会向 Selenium 发出信号,表明页面已完成加载,但页面内容仍在后台加载。因此,您的代码将被执行并抓取部分加载的页面。要解决此问题,我们需要等待指示页面已完成加载的消息。我选择等待所有

<div class="skeleton-container" ...>
元素都消失。一旦这些都消失了,表数据加载就完成了,表数据就可用了。

工作代码...

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.maximize_window()

deb = 'AALM11'
link_agenda = 'https://data.anbima.com.br/debentures/' + deb + '/agenda?page=1&size=100'
driver.get(link_agenda)

wait = WebDriverWait(driver, 10)
wait.until(EC.invisibility_of_element_located((By.CSS_SELECTOR, "div.skeleton-container")))
table = driver.find_element(By.CSS_SELECTOR, "table")
print(table.get_attribute('outerHTML'))
© www.soinside.com 2019 - 2024. All rights reserved.