获取阻止信息

时间:2017-07-02 18:31:42

标签: python selenium web-scraping

我需要在网页上计算li元素。元素是可见的而不是框架内。

html代码是:

<ul class='uiList _10-2x _6kg'>
<li class='_10-5x'>...</li>
<li class=''>...</li>

结束等。

我尝试使用下一种方式找到元素:

xpath: count=len(browser.find_elements.by_xpath("//ul[@class='uiList _10-2x _6kg']/li"))

它有效,但我什么都没有 - [](没有len)和0和len

class_name:

browser.find_element_by_class_name("uiList _10-2x _6kg")
count = browser.find_elements_by_tag_name('li')
len(count)

此处 - 无法找到班级名称

使用li class:

len(browser.find_elements_by_class('_10-5x')

空结果 - []与Xpath相同

css_selector:选择器不是永久性的,也不会因页面刷新而改变。

我错了吗?或者还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

根据提供的HTML代码段,我看不到ulclass="ul class"ulclass="uiList _10-2x _6kg"

您可以尝试指定确切的类名值:

len(browser.find_elements_by_css_selector('ul.uiList._10-2x._6kg>li'))

或部分班级名称:

len(browser.find_elements_by_xpath('//ul[starts-with(@class,"uiList")]/li'))

另请注意,目标列表可以动态生成,因此您可以添加一些explicit wait

from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

len(wait(browser, 10).until(EC.presence_of_all_elements_located((By.XPATH, '//ul[starts-with(@class,"uiList")]/li'))))