[英]Python/Selenium - find_elements_by_class_name with long 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-8
和jobtitle
是 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.