早上好,
我正在尝试做一个网页抓取项目。在运行项目后,我期望有一个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]