如何向下滚动网页上的 Power BI 表,以便使用 Python + Selenium 抓取其内容?

How can I scroll down a Power BI table on a webpage in order to scrape its content using Python + Selenium?

提问人:heruscod 提问时间:11/17/2023 更新时间:11/17/2023 访问量:25

问:

我正在尝试使用 Selenium 库抓取 Power BI 仪表板网站的表。我已经取得了一些进展,例如单击页面过滤器并抓取初始数据。但是,为了完全完成我的任务,我需要抓取所有表格内容,为此,我应该向下滚动表格(在抓取数据时),直到所有数据都完全加载。滚动部分是我卡住的地方。我尝试过一些不同的东西,但没有一个奏效。

这是我到目前为止的代码:

driver = webdriver.Chrome()

driver.get("https://app.powerbi.com/view?r=eyJrIjoiYTgyZTI0NjgtNGFhYi00MWI3LTg4YTUtNWY2MTAyMjUxZjI2IiwidCI6ImI4YzI1OTMyLTVlNzYtNGIyYi05YzUzLWQ0MTc0NWU5YzkyZCJ9")

table_xpath = r"//*[@id='pvExplorationHost']/div/div/exploration/div/explore-canvas/div/div[2]/div/div[2]/div[2]/visual-container-repeat/visual-container[5]/transform/div/div[3]/div/div/visual-modern"

filter = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//*[@id='pvExplorationHost']/div/div/exploration/div/explore-canvas/div/div[2]/div/div[2]/div[2]/visual-container-repeat/visual-container[1]/transform/div/div[3]/div/div/visual-modern/div/div/div/div[1]/div/div[1]/div/div/div[3]/div[2]")))

sleep(3)

filter.click()

table_element = driver.find_element(By.XPATH, table_xpath)

driver.execute_script("arguments[0].scrollBy(0, 500);", table_element)

sleep(10)

以及我试图刮掉它的部分(它有效!

list1 = []
for j in range (1,30):
    data_teste = [i.text for i in driver.find_elements(By.XPATH, table_xpath + "/div/div/div[2]/div[1]/div[2]/div/div[" + str(j) +"]")]
    list1.append(data_teste)    
print(list1)

但是滚动部分发生任何事情,我不确定我做错了什么。 谁能解释一下我如何做到这一点?

selenium-webdriver web-scraping powerbi

评论

0赞 Sam Nseir 11/17/2023
从 Power BI 报表中抓取数据似乎是错误的(以一种奇怪/为什么的方式)。我很想了解更多关于您的用例的信息。
0赞 heruscod 11/17/2023
这是来自巴西政府教育计划的公共数据。但是,今年他们做出了一个不幸的决定,即仅提供 Power BI 仪表板,而不是提供 CSV 文件。

答: 暂无答案