gpt4 book ai didi

python - 如何在 Selenium 中选择表格单元格中的所有文本

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:08 24 4
gpt4 key购买 nike

尝试编写一个简单的脚本来为我提供表格的所有单元格内容。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

url = 'http://127.0.0.1/html5css3'
driver = webdriver.Firefox()
driver.get(url)

table = driver.find_elements_by_xpath("//td//text()")

for t in table:
print t

我还没有找到涵盖从基础到高级的 xpath 语法教程。

示例输入:

<table border="1">
<tr>
<td>Product</td>
<td>Vehicle</td>
<td>Price</td>
<td>Rating</td>
</tr>
<tr>
<td>Duration</td>
<td>Latex</td>
<td>62</td>
<td>5</td>
</tr>
<tr>
<td>Super Paint</td>
<td>Latex</td>
<td>56</td>
<td>4</td>
</tr>
<tr>
<td>A-100</td>
<td>Latex</td>
<td>48</td>
<td>3</td>
</tr>
<tr>
<td>Macropoxy</td>
<td>Epoxy</td>
<td>62</td>
<td>5</td>
</tr>
</table>

最佳答案

当我运行你的程序时,我收到了这个错误信息:

The result of the xpath expression "//td//text()" is: [object XrayWrapper [object Text]]. It should be an element.

果然,当我在 lxml 中运行该表达式时,我得到了一个字符串列表。

显然,.find_elements* 只想返回 WebElements;他们不想返回字符串。

根据您的更高要求,尝试以下方法之一:

list_of_elements = driver.find_elements_by_xpath('//td') # return elements
list_of_text = [t.text for t in driver.find_elements_by_xpath('//td')] # return strings

不过,如果是我,我希望在我的结果中有一些结构:

list_of_lists = [[td.text
for td in tr.find_elements_by_xpath('td')]
for tr in driver.find_elements_by_xpath('//tr')]
list_of_dicts = [dict(zip(list_of_lists[0],row)) for row in list_of_lists[1:]]

这样,您的目标就很容易实现了:

My eventual goal is to do something like PRINT td[2] Where td[4] is greater than 3

print [row['Vehicle'] for row in list_of_dicts if int(row['Rating']) > 3]

这是一个可能会做你想做的事情的最终程序:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

url = 'file:///tmp/x.html'
driver = webdriver.Firefox()
driver.get(url)

list_of_lists = [[td.text
for td in tr.find_elements_by_xpath('td')]
for tr in driver.find_elements_by_xpath('//tr')]
list_of_dicts = [dict(zip(list_of_lists[0],row)) for row in list_of_lists[1:]]

for t in list_of_dicts:
if int(t['Rating']) > 3:
print t['Vehicle']

关于python - 如何在 Selenium 中选择表格单元格中的所有文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25110726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com