Python的硒 - 与表
问题描述:
访问HTML标签我有这个表: -Python的硒 - 与表
<table>
<tbody>
<tr class="stripe">
<td colspan="3"/>
</tr>
<tr>
<td style="width: 160px;">Field1:</td>
<td style="width: 250px;">
<strong>
<span id="lblSalesExec">item1</span>
</strong>
</td>
<td>
</td>
</tr>
<tr>
<td>Field2:</td>
<td>
<strong>
<span id="lblLocation">item2</span>
</strong>
</td>
<td/>
</tr>
<tr>
<th colspan="3">
<h3 style="color: rgb(255, 255, 255);">Other Details</h3>
</th>
</tr>
<tr>
<td>Field3:</td>
<td>
<span id="lblRef">item3</span>
</td>
<td/>
</tr>
<tr>
<td>Field4:</td>
<td>
<span id="lblCustomerName">item4</span>
</td>
<td/>
</tr>
<tr>
<td>Field5:</td>
<td>
<span id="lblCurrentAddress">
item5-1
<br/>
item5-2
<br/>
item5-3
<br/>
item5-4
</span>
</td>
<td/>
</tr>
<tr>
<td>
<i class="icon-envelope"/>
Field6:
</td>
<td>
<input name="txtCustomerEmail" type="text" value="item6" id="txtCustomerEmail" style="width: 250px;"/>
</td>
<td/>
</tr>
<tr>
<td>
<i class="icon-phone"/>
Field7:
</td>
<td>
<input name="txtCustomerTelNo1" type="text" value="item7" id="txtCustomerTelNo1" style="width: 250px;"/>
</td>
<td/>
</tr>
<tr>
<td>
<i class="icon-phone"/>
Field8:
</td>
<td>
<input name="txtCustomerTelNo2" type="text" id="txtCustomerTelNo2" style="width: 250px;"/>
</td>
<td/>
</tr>
<tr>
<td>
<i class="icon-phone"/>
Field9:
</td>
<td>
<input name="txtCustomerTelNo3" type="text" id="txtCustomerTelNo3" style="width: 250px;"/>
</td>
<td/>
</tr>
<tr>
<td>Field10:</td>
<td>
<span id="lblCurrentVehicle">
item10
<br/>
item10-1
<br/>
item10-2
</span>
</td>
<td/>
</tr>
<tr>
<th colspan="3">
</th>
</tr>
<tr>
</tbody>
</table>
如何我使用Python硒解析表,有很多在其行不同的HTML标签?请参阅下面的附图和预期的输出表。
这是我不要那么远,
ele = driver.find_element_by_class_name("list")
ele_txt = ele.text
spli = re.split('\n', ele_txt)
# spli1 = re.split(':', ele_txt)
spli
答
首先你要find_elementS没有find_element。如果我很好地理解你的目标,你的目标是从span id中获取文本;因此这是我将集中我的xPath表达式的地方。因此,下面你应该能够聪明地找到所有对应于html span id的元素;意思是没有为特定的跨度id/html标签指定任何特定的值。这里是XPath:
//tr[@span]
现在使用find_elements您可以返回匹配XPath(所以,所有的跨度IDS)元素的列表;然后从中提取文本。
for ele in driver.find_elements_by_xpath("//tr[@span]"):
print ele.text
祝你好运! OP的评论后
更新:
你的HTML标签作为树的思考。你从顶部开始,一直到你想要的属性。因此,如果你的html标签被输入(并且你想要获取的属性是type ='submit'),这个转换就像在xpath:// htmlTag [@ attribute ='value'] - >所以我们将有 - > //输入[@ type ='submit'] 如果您为Chrome加载xPath助手并右键单击某个元素并选择“检查”,则可以关注该元素;那么它侧重于你需要选择:)
运行你的解决方案,我得到了这个错误:InvalidSelectorException –
那么,find_elements肯定是正确的,因为这个:http://selenium-python.readthedocs.io /locating-elements.html所以它不喜欢实际的表达式。我'改进了我的答案,很快我会为您提供一种方法 - 不只是一个解决方案,与我交配:) –
我强烈建议您下载适用于Chrome的Xpath助手附加程序。这会让你的生活变得更加简单,并且会帮助你实验和理解xPath更多 –