0

Impressions
<div class="ellipsis _1ha3" data-hover="tooltip" data-tooltip-display="overflow" data-tooltip-text-direction="auto">11,483</div>

Clicks

<div class="ellipsis _1ha3" data-hover="tooltip" data-tooltip-display="overflow" data-tooltip-text-direction="auto">379</div>

我目前被卡住了。我正在运行两段相同的代码来从 fb 广告管理器中提取指标,尽管顶部代码工作正常,但第二个代码(试图查找点击的代码)似乎无法找到我正在寻找的元素。我已经尝试了 xpath、css_selectors,一切,但似乎仍然无法找出为什么我无法找到该元素。任何帮助,将不胜感激。谢谢!

展示次数

impressions = browser.find_element_by_xpath('//*[@id="ads_pe_container"]/div[2]/div[2]/div[4]/div/div/div/div/div[2]/div/div/div[1]/div[1]/div/div[2]/div/div/div[1]/div[4]/div/div/div[2]/div/div[5]/div/div/div/div[1]')
impressions_text = impressions.text
impressions_attribute_value = impressions.get_attribute('value')
impressions = ('{0}'.format(impressions_text))
print(impressions)

点击次数

clicks = browser.find_element_by_xpath('//*[@id="ads_pe_container"]/div[2]/div[2]/div[4]/div/div/div/div/div[2]/div/div/div[1]/div/div/div[2]/div/div/div[1]/div[4]/div/div/div[2]/div/div[7]/div/div/div/div[1]')
clicks_text = clicks.text
clicks_attribute_value = clicks.get_attribute('value')
clicks = ('{0}'.format(clicks_text))
print(clicks)

我期待#click 像#impressions 一样返回一个数字,但它似乎找不到该元素。我什至尝试过切换帧无济于事。#impressions 位于 DOM 窗口中,所以这不是问题。任何帮助,将不胜感激。

元素 #clicks 的副本

4

2 回答 2

0

您应该始终尝试修剪选择器,使它们尽可能薄。

作为选择器,您应该使用:

此选择器将匹配确切的类名:

xpath('//div[@class="ellipsis _1ha3"][x]')

或者

此选择器将匹配包含此字符的元素类:

xpath('//div[contains(@class, "ellipsis _1ha3")][x]')
  • x 是检索到的 dom 元素的位置,从 1 开始,([1] 将选择第一次出现,依此类推)。
于 2019-01-15T11:36:47.563 回答
0

发生的变量必须放在完整的 xpath 之后:

xpath('(//div[contains(@class, "ellipsis _1ha3")])[x]')

或者

xpath( ' (//div[@class='ellipsis _1ha3'])[x]')

您可以在 Chrome 的控制台中尝试 xpath,如下所述:

$x("(//div[contains(@class,'ellipsis _1ha3')])[x]")

如果类名必须完全匹配,那么:

$x("(//div[@class='ellipsis _1ha3'])[x]")
于 2019-01-16T06:00:55.157 回答