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标签?请参阅下面的附图和预期的输出表。

enter image description here

这是我不要那么远,

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的评论后

更新:

enter image description here

你的HTML标签作为树的思考。你从顶部开始,一直到你想要的属性。因此,如果你的html标签被输入(并且你想要获取的属性是type ='submit'),这个转换就像在xpath:// htmlTag [@ attribute ='value'] - >所以我们将有 - > //输入[@ type ='submit'] 如果您为Chrome加载xPath助手并右键单击某个元素并选择“检查”,则可以关注该元素;那么它侧重于你需要选择:)

+0

运行你的解决方案,我得到了这个错误:InvalidSelectorException –

+0

那么,find_elements肯定是正确的,因为这个:http://selenium-python.readthedocs.io /locating-elements.html所以它不喜欢实际的表达式。我'改进了我的答案,很快我会为您提供一种方法 - 不只是一个解决方案,与我交配:) –

+0

我强烈建议您下载适用于Chrome的Xpath助手附加程序。这会让你的生活变得更加简单,并且会帮助你实验和理解xPath更多 –