2017-02-15 101 views
0

訪問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 

回答

1

首先你要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更多 –