2017-02-15 13 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> 

私はその行のHTMLタグを変えるたくさんのテーブルを解析するためにPythonのセレンを使用してどのように?以下の添付イメージを参照して、期待される出力表を参照してください。

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をしたいたものです。私があなたの目標をうまく理解していれば、あなたはスパンIDからテキストを取得することを目指しています。したがって、これは私のxPath表現に焦点を合わせます。したがって、以下では、html span idに対応するすべての要素を賢明な方法で見つけることができるはずです。特定のスパンid/htmlタグに特定の値を指定することなく意味します。ここではXPathは次のとおりです。今、あなたは、XPath(そう、すべてのスパンID)を一致する要素のリストを返すことができfind_elementsを使用して

//tr[@span] 

。それらからテキストを抽出します。

for ele in driver.find_elements_by_xpath("//tr[@span]"): 
    print ele.text 

運が良かった! OPのコメントの後

更新:ツリーとしてあなたのhtmlタグの

enter image description here

と思います。あなたは上から始めて、あなたが望む属性にあなたの道を下ろします。したがって、あなたのhtmlタグが入力されていれば、取得する属性はtype = 'submit'です。これはxpath:// htmlTag [@ attribute = 'value'] - >のように変換されます。 // input [@ type = 'submit'] ChromeのxPathヘルパーを読み込み、要素を右クリックして[検査]を選択すると、要素に集中できます。

+0

あなたのソリューションを実行すると、私はこのエラーを出しました:InvalidSelectorException –

+0

このため、find_elementsは確かに正しいです:http://selenium-python.readthedocs.io /locating-elements.htmlなので、実際の表現では好きではないものです。私は私の答えを改善し、すぐにあなたのための方法で来るだろう - ただの解決策ではなく、私と一緒にクマ:) –

+0

私は非常にChrome用のXpathヘルパーアドオンをダウンロードすることをお勧めします。これはあなたの人生をもっと楽にしてくれるでしょうし、xPathを実験して理解するのに役立ちます。 –