【问题标题】:How to extract ec2 instance details like name, memory from aws website using python selenium如何使用 python selenium 从 aws 网站提取 ec2 实例详细信息,如名称、内存
【发布时间】:2021-04-27 17:09:32
【问题描述】:

我一直在尝试使用 python selenium 从https://aws.amazon.com/ec2/pricing/on-demand/ 中提取 ec2 实例名称。
我尝试了以下方法:

  1. find_elements_by_xpath("//*[@id="root"]/div/div/div[2]/div[2]/div/awsui-table/div/div[3]/table/tbody/tr")

  2. tbl_rows = drv.find_elements_by_class_name("awsui-table-row")

这两种方法都返回空结果。我怎样才能解决这个问题? 下面的示例代码返回零行

url = "https://aws.amazon.com/ec2/pricing/on-demand/"
drv = webdriver.Chrome("some path")
drv.get(url)
sleep(3)
drv.maximize_window()
sleep(1)
tbl_rows = drv.find_elements_by_xpath("//tr[@class='awsui-table-row']")
pr("number of rows in table: {}".format(len(tbl_rows)))

【问题讨论】:

  • 你知道控制台模式吗?例如,在 Chrome 中按 F12 更改为开发者模式并转到控制台。您现在可以将任何 xpath 表达式输入为 $x("xpath expression"),这将列出找到的元素。对于上面的 xpath,这将返回一个空列表。
  • 它在控制台模式下工作。当我在控制台模式下输入 xpath 时,它正确地指向正确的 web 元素。但是当我在代码中使用相同的 xpath 时,它返回空值
  • 好吧,我很难相信这一点。当然,上面的 xpath 在 Chromium 控制台中不起作用,因为你已经嵌套了 "。即使修复了这个,结果对我来说也是空的,使用你提到的网站。
  • 您可以尝试以下 xpath 一次吗:"//tr[@class='awsui-table-row']"
  • @user2622678 你在找什么元素?你说的ec2是什么意思?我看到您在问题中提出的两个定位器都匹配 20 个元素

标签: python amazon-web-services selenium selenium-webdriver amazon-ec2


【解决方案1】:

实例表在 iframe 中。在脚本中包含以下语句后,我可以获取表行:

iframe = drv.find_element_by_xpath('//*[@id="iFrameResizer0"]')
drv.switch_to.frame(iframe)

【讨论】:

    猜你喜欢
    • 2018-10-29
    • 1970-01-01
    • 2017-07-28
    • 2017-12-26
    • 2020-10-29
    • 2016-10-20
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多