Python 硒蟒蛇';按类名称查找元素;一无所获
我正试图从一个动态的工作列表中获取职位名称。当我使用函数find_elements_by_class_name时,该函数不返回任何内容。我是selenium的新手,所以我不确定我是否只是做了一些不正确的事情或误解了功能 我要刮的页面是: 看起来像只虫子? 这项工作:Python 硒蟒蛇';按类名称查找元素;一无所获,python,selenium,web-scraping,dynamic,Python,Selenium,Web Scraping,Dynamic,我正试图从一个动态的工作列表中获取职位名称。当我使用函数find_elements_by_class_name时,该函数不返回任何内容。我是selenium的新手,所以我不确定我是否只是做了一些不正确的事情或误解了功能 我要刮的页面是: 看起来像只虫子? 这项工作: jobs = driver.execute_script(""" return document.getElementsByClassName("col-md-8 jobtitle") """) 尝试: 我已经为xpath切换
jobs = driver.execute_script("""
return document.getElementsByClassName("col-md-8 jobtitle")
""")
尝试:
我已经为xpath切换了按类查找元素,这样您就有了更大的灵活性,而且通常效果更好,我建议您研究一下 根本原因:
col-md-8
和jobtitle
是两个不同的类别。当您使用find\u element\u by\u class\u name
时,它会在内部将类名转换为css选择器,并尝试查找元素
下面是find\u element\u by\u class\u name
在内部使用css
的证据
解决方案:
由于Selenium在内部使用css
,因此您必须确保将类聚集在一起,即class1.class2.class3
。简单来说,将UI中类名中的所有空格替换为单点
如何在您的情况下实现这一点:
您必须使用以下语法
driver.find_element_by_class_name('col-md-8.jobtitle')
使用
find\u elements\u by\u class\u name(“jobtitle”)
只需将类名之间的空格替换为
,在下面的回答中可以找到更多解释。这会起作用,但只是因为webdriver在内部将
添加到表达式中。使用方法是通过类名称(“col-md-8”)查找元素或通过类名称(“jobtitle”)查找元素,或者对于多个类,使用css选择器直接与一起使用。col-md-8.jobtitle'
我更喜欢通过类名称的顺序查找元素例如。,通过css\u选择器('div.jobtitle.col-md-8')查找元素。
。
jobs = driver.find_elements_by_xpath("//div[@class='col-md-8 jobtitle']/a")
driver.find_element_by_class_name('col-md-8.jobtitle')