如何在Python中将Selenium WebElements转换为字符串列表

3
我已从Scopus网站收集了必要的数据。我的输出保存在名为“document”的列表中。当我使用每个元素的type方法时,Python返回给我这个类:
"<class'selenium.webdriver.firefox.webelement.FirefoxWebElement'>" 

为了解决这个问题,我使用了如下的文本方法:document=driver.find_elements_by_tag_name('td')
for i in document:  
    print i.text

因此,我可以以文本格式查看结果。但是,在独立调用列表的每个元素时,会在此代码中打印出空格:

x=[]
for i in document:
     x.append(i.text)

print(x[2])将返回空格。我该怎么办?


当前的输出和期望的输出是什么?您可以分享相应的HTML代码示例吗? - Andersson
为什么不尝试使用 x.append(i.text.strip())。您可以拥有一些没有文本或带有空格的元素。 - Tarun Lalwani
因此,我输出的一部分如下: [u“”,u“”,u“”,u“”,u“”,u“”,u“”,u“”,u“”,u“”,u“”,u“”,u“用于密集和稳健工业无线网络大规模计划的高效遗传算法”,u“Gong,X.,Plets,D.,Tanghe,E…] - Hamed Baziyad
2个回答

4

由于您使用了以下代码行:

document=driver.find_elements_by_tag_name('td')

并在控制台上查看输出结果:

"<class'selenium.webdriver.firefox.webelement.FirefoxWebElement'>" 

这是预期的行为,因为 Selenium 打印与搜索条件匹配的节点的引用。
根据您的代码尝试打印留出空格的文本,您可以使用以下代码块:
x=[]
document = driver.find_elements_by_tag_name('td')
for i in document :
    if (i.get_attribute("innerHTML") != "null") :
    x.append(i.get_attribute("innerHTML"))
print(x[2])

问题仍然存在。此外,这段代码中还会出现另一个问题。 - Hamed Baziyad
你现在遇到了什么问题?你尝试过这段代码吗?从你的问题中不清楚你为什么要爬取包含许多其他子标签和文本的<td> - undetected Selenium

1
我的代码是正确的。但是,选定用于显示的元素为空格。通过选择另一个元素,结果被显示出来。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接