无法获取selenium python的所有子级(动态加载)

无法获取selenium python的所有子级(动态加载),python,selenium,selenium-webdriver,beautifulsoup,Python,Selenium,Selenium Webdriver,Beautifulsoup,这个问题已经得到了回答,最简单的方法之一是在元素中获取标记名(如果已知的话) child_elements = element.find_elements_by_tag_name("<tag name>") 页面源中的元素骨架/结构如下图所示: (所有div标记的结构都是相同的,例如,其中一个扩展为显示 我还尝试直接获取类名result-lockup\u name,但在25个实例中,它仍然只返回9个。原因可能是什么 编辑 起初,所有的元素都没有加载,因

这个问题已经得到了回答,最简单的方法之一是在元素中获取标记名(如果已知的话)

    child_elements = element.find_elements_by_tag_name("<tag name>")
页面源中的元素骨架/结构如下图所示: (所有
div
标记的结构都是相同的,例如,其中一个扩展为显示

我还尝试直接获取类名result-lockup\u name,但在25个实例中,它仍然只返回9个。原因可能是什么

编辑

起初,所有的元素都没有加载,因此我不得不按

    browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
当问题再次出现时,我无法理解,我提出了这个问题。显然,即使是卷轴也没有帮助,因为某些元素看起来是隐藏的

在再次手动滚动它们并暂停代码之后,我能够“启用它们”


这是一种保护网站不被刮伤的掩码吗?我现在觉得我可能需要以增量滚动来显示它们,但是有没有更聪明的方法呢?

元素是动态加载的,你需要缓慢滚动页面以获得所有子元素。请尝试下面的代码,希望它能工作。这这只是一个解决办法

element_list=[]
while True:
    browser.find_element_by_tag_name("body").send_keys(Keys.DOWN)
    time.sleep(2)
    listlen_before=len(element_list)
    par_element = browser.find_element_by_class_name('search-results__result-list')
    child_elements = par_element.find_elements_by_tag_name("dt")
    for ele in child_elements:
        if ele.text in element_list:
            continue
        else:
            element_list.append(ele.text)

    listlen_after = len(element_list)

    if listlen_before==listlen_after:
        break

元素可能正在加载,您需要滚动页面以获取所有子元素。您确定所有25个实例都在加载,并且没有动态加载吗?您可以共享吗URL@KunduK是这样的。我发布的图像是在滚动之后的,延迟了5秒。我刚刚注意到,即使在使用selenium滚动之后,某些元素仍然存在--挂起.Upo手动滚动并执行代码,我可以得到25instances@Sers该url需要登录,因此我必须使用屏幕截图。否则,我可以共享该url。请检查更新的urlscreenshot@LakshmiNarayanan:对于某些web应用程序,如果你转到页面底部,你将找不到所有元素。如果你转到滚动一半您可能会找到页面的所有元素。您可以缓慢滚动页面并在列表中不断添加元素,这可能有助于编辑页面以仅返回键的元素。DOWNI使用的窗口。scrollBy(0,x)并增加x,直到它达到网页的高度。对于此web应用,向下滚动的次数不多。一些web应用向下滚动非常有用。但是,窗口。滚动(0,x)也是增加x值的好主意。
element_list=[]
while True:
    browser.find_element_by_tag_name("body").send_keys(Keys.DOWN)
    time.sleep(2)
    listlen_before=len(element_list)
    par_element = browser.find_element_by_class_name('search-results__result-list')
    child_elements = par_element.find_elements_by_tag_name("dt")
    for ele in child_elements:
        if ele.text in element_list:
            continue
        else:
            element_list.append(ele.text)

    listlen_after = len(element_list)

    if listlen_before==listlen_after:
        break