当前位置: 首页 > 面试题库 >

从使用Power BI的网站中收集数据-从网站上的Power BI中检索数据

贲铭
2023-03-14
问题内容

我想从此页面(以及与之相似的页面)中删除数据:https : //cereals.ahdb.org.uk/market-
data-centre/historical-data/feed-
ingredreds.aspx

该页面使用Power BI。不幸的是,找到一种报废Power
BI的方法很困难,因为每个人都想报废使用/报废Power
BI,而不是从报废。最接近的答案是这个问题。却无关。

首先,我使用了Apache
tika,很快我意识到在加载页面之后就已经在加载表数据了。我需要页面的渲染版本。

因此,我使用了Selenium。我想Select All从一开始(发送Ctrl+A组合键),但是它不起作用。也许它受页面事件的限制(我也尝试使用开发人员工具删除所有事件,但仍然Ctrl+A无法正常工作。

我也尝试读取HTML内容,但是Power BI
div使用position:absolute并区分表中的位置div(行和列)将元素显示在屏幕上是一项艰苦的工作。

由于Power BI使用JSON,因此我尝试从那里读取数据。但是,它是如此复杂,以至于我找不到规则。似乎将关键字放在某个位置并在表中使用它们的索引。

注意 :我意识到所有数据都不会加载,甚至不会同时显示。div类的A scroll-bar-part- bar负责充当滚动条,并进行移动以加载/显示数据的其他部分。

我用来读取数据的代码如下。如上所述,生成的数据的顺序与在浏览器上呈现的顺序不同:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

options = webdriver.ChromeOptions()
options.binary_location = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"
driver = webdriver.Chrome(options=options, executable_path="C:/Drivers/chromedriver.exe")

driver.get("https://app.powerbi.com/view?r=eyJrIjoiYjVjM2MyNjItZDE1Mi00OWI1LWE5YWYtODY4M2FhYjU4ZDU1IiwidCI6ImExMmNlNTRiLTNkM2QtNDM0Ni05NWVmLWZmMTNjYTVkZDQ3ZCJ9")
parent = driver.find_element_by_xpath('//*[@id="pvExplorationHost"]/div/div/div/div[2]/div/div[2]/div[2]/visual-container[4]/div/div[3]/visual/div')
children = parent.find_elements_by_xpath('.//*')
values = [child.get_attribute('title') for child in children]

感谢您解决上述任何问题。对于我而言,最有趣的是约定以JSON格式存储Power BI数据。


问题答案:

将滚动部分和JSON放在一边,我设法读取了数据。关键是读取父级内部的所有元素(在问题中完成):

parent = driver.find_element_by_xpath('//*[@id="pvExplorationHost"]/div/div/div/div[2]/div/div[2]/div[2]/visual-container[4]/div/div[3]/visual/div')
children = parent.find_elements_by_xpath('.//*')

然后使用它们的位置对它们进行排序:

x = [child.location['x'] for child in children]
y = [child.location['y'] for child in children]
index = np.lexsort((x,y))

要对我们在不同行中阅读的内容进行排序,此代码可能会有所帮助:

rows = []
row = []
last_line = y[index[0]]
for i in index:
    if last_line != y[i]:
        row.append[children[i].get_attribute('title')]
    else:
        rows.append(row)
        row = html" target="_blank">list([children[i].get_attribute('title')]
rows.append(row)


 类似资料:
  • 问题内容: 我想从此页面(以及与之相似的页面)中删除数据:https : //cereals.ahdb.org.uk/market- data-centre/historical-data/feed- ingredreds.aspx 该页面使用Power BI。不幸的是,找到一种报废Power BI的方法很困难,因为每个人都想报废使用/报废Power BI,而不是从报废。 首先,我使用Apache

  • 我有一个具有以下格式的数据集: 我需要转换: 我试着用 附件包:“dplyr” 从“package:stats”屏蔽了以下对象: 滤波器,滞后

  • 问题内容: 我有一个mysql数据库,正试图从我们的网站主机(godaddy)中检索。我遵循的格式似乎正确,但它告诉我: 码: 我做了conn的print语句,以为连接可能为空,并显示为: 任何人都有什么想法会导致这样的事情? 问题答案: 您的数据库URL应包含您的数据库名称。这通常是您的URL,后跟“ / DBNAME”。 其中“ mydb”是您的数据库名称。

  • 尝试使用Jsoup而不是网站API从网站上练习和获取信息。我的代码没有错误,但文本字段没有更改。它只是给我一个空白。我如何从网站上获取信息?我正试图获取主要新闻,以便在我的网站上发布。 我的代码:

  • 问题内容: 我想使用HTTP GET和POST命令从网站检索URL并解析HTML。我该怎么做呢? 问题答案: 您可以将HttpURLConnection与URL结合使用。

  • 我在somes网站上尝试过,效果很好。问题是当我在一个特定的网站(www.ifood.com.br)使用时。它收集一些链接,然后返回一些错误。我是Python的初学者,所以我不知道它们是什么意思。拜托,我需要一些帮助。 代码的结果: https://d1jgln4w9al398.cloudfront.net/imagens/ce/wl/www.ifood.com.br/favicon.ico ht