繁体   English   中英

Selenium Python | 'find_elements_by_class_name' 不返回任何内容

[英]Selenium Python | 'find_elements_by_class_name' returns nothing

我正在尝试从动态职位列表中抓取职位名称。 当我使用 function find_elements_by_class_name 时,function 不会返回任何内容。 我是 selenium 的新手,所以我不确定我只是做错了什么还是误解了功能。

我试图抓取的页面是: https://recruit.hirebridge.com/v3/CareerCenter/v2/?cid=7724

from selenium import webdriver
import time

#define the path for the chrome webdriver
chrome_path = r"C:/web/jobListing/chromedriver.exe"

#create a instance of the webdriver
driver = webdriver.Chrome(chrome_path)

driver.get("https://recruit.hirebridge.com/v3/CareerCenter/v2/?cid=7724")
time.sleep(10)
jobs = driver.find_elements_by_class_name("col-md-8 jobtitle")

print("starting print")
for job in jobs:
    print(job.text)

看起来像一个错误? 这有效:

jobs = driver.execute_script("""
  return document.getElementsByClassName("col-md-8 jobtitle")
""")

尝试:

jobs = driver.find_elements_by_xpath("//div[@class='col-md-8 jobtitle']/a")

我已将 class 的查找元素切换为 xpath,这样您具有更大的灵活性并且通常效果更好,建议您研究一下!

根本原因:

col-md-8jobtitle是 2 个不同的类。 当您使用find_element_by_class_name时,它会在内部将 class 名称转换为 css 选择器并尝试查找元素。

以下是find_element_by_class_name在内部使用css的证据。

在此处输入图像描述

解决方案:

由于 Selenium 在内部使用css ,因此您必须确保将这些类组合在一起,这意味着class1.class2.class3 简单来说,用 UI 中 class 名称中的replace all white spaces with single dot

如何根据您的情况实施:

您必须使用以下语法。

driver.find_element_by_class_name('col-md-8.jobtitle')

暂无
暂无

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

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