find_elements-Selenium(Python):如何用null(或其他值)代替空白填充



早上好,

我正在尝试做一个网页抓取项目。在运行项目后,我期望有一个600个值的列表,但我得到了一个450个值的清单。

我知道FindElements会用找到的值创建一个列表,但我想知道是否有任何方法可以获得一个包含600个值的列表。

我想我可以用na填充未找到的值,但我找不到合适的方法。如果我没有错,我应该在I.text为空时附加一个nan。这是我的代码:

def Prices():
global prices
global prices2
prices=[]
try:  
for i in driver.find_elements_by_class_name('eur'):
if i.text != "":
prices.append(i.text)
else:
prices.append(np.nan)
print(prices)
except NoSuchElementException as e:
print (e)
return prices

然后我想。如果我不能附加nan,也许我可以附加另一个元素。所以我找到了另一个元素,并使用了以下代码:

def Prices_function():
prices=[]
try:  
for i in driver.find_elements_by_class_name('eur'):
if i.text != "":   
prices.append(i.text)
else:
for i in driver.find_elements_by_class_name('eur_m'):
prices.append(i.text)        
print(prices)
except NoSuchElementException as e:
print (e)
return prices

但是这个代码也不起作用。我想知道为什么这些代码都不起作用?

有人能帮我理解吗?

非常感谢你的帮助!!

要查找所有600个元素,可以使用css_selector来查找eur类或eur_m类的元素

elements = driver.find_elements_by_css_selector('.eur, .eur_m')

您也可以定位以类eur开头的元素,但它可能会找到更多的元素,这取决于html

elements = driver.find_elements_by_css_selector('[class^="eur"]')

并获取文本

prices = [el.text for el in elements]

最新更新