Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 硒蟒蛇';按类名称查找元素;一无所获_Python_Selenium_Web Scraping_Dynamic - Fatal编程技术网

Python 硒蟒蛇';按类名称查找元素;一无所获

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切换

我正试图从一个动态的工作列表中获取职位名称。当我使用函数find_elements_by_class_name时,该函数不返回任何内容。我是selenium的新手,所以我不确定我是否只是做了一些不正确的事情或误解了功能

我要刮的页面是:

看起来像只虫子? 这项工作:

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')