繁体   English   中英

使用硒解析嵌套元素不起作用 - python

[英]Parsing nested elements using selenium not working - python

所附图片显示了我试图抓取的 HTML 页面的结构: 在此处输入图片说明

首先,我检索元素league-item ,然后我正在寻找具有类名称的i项目: 'ds-icon-material league-toggle-icon'

Selenium 告诉我它找不到任何具有此类名称的项目。 这是我的代码:

path = r"""chromedriver.exe"""
driver = webdriver.Chrome(executable_path=path)
driver.get(_1bet)
time.sleep(5)
#a = driver.find_element_by_class_name('box-content.box-bordered.box-stick.box-bordered-last')

league1 = driver.find_elements_by_class_name('league-list')[0]
league1.find_element_by_class_name("ds-icon-material league-toggle-icon")

你能帮我么? 我不明白为什么它不起作用。

谢谢

注意:我正在抓取的网站是: https : //1bet.com/ca/sports/tennis? time_range =all

我无法访问该网页,所以我只能猜测那里发生了什么。
我可以在这里解决两个问题:

  1. 要选择元素内的元素,最好使用以点开头的 XPath .
  2. 您尝试访问的元素有 2 个类名。 您应该使用 css 选择器或 XPath 根据多个类名定位元素。
    所以我建议你试试这个:
league1 = driver.find_elements_by_class_name('league-list')[0]
league1.find_element_by_xpath(".//i[@class='ds-icon-material league-toggle-icon']")

Selenium 需要单个类名 - 它在开头添加dot以创建CSS selector
但是"ds-icon-material league-toggle-icon"是两个类,它会在第一类之前而不是在第二类之前添加dot ,这会产生问题。

您可以直接使用带有所有点的 css 选择器

 .find_element_by_css_selctor(".ds-icon-material.league-toggle-icon")

或者你必须欺骗 Selenium 并在类之间添加缺失的点

 .find_element_by_class_name("ds-icon-material.league-toggle-icon")

我无法连接到此页面以确认这就是全部。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM