2017-10-10 108 views
0

我有一個網頁,我試圖從中返回一個值,但是我找不到正確的方法來使用Selenium來抓取它。從HTML類/範圍返回值?

下面是相關的HTML部分:

<table class="table table-striped"> 
    <tbody> 
     <tr class="hidden-sm hidden-xs"> 
     <th scope="row"><a style="cursor: pointer" 
      onClick="document.formShip.P_IMO.value='9526942';document.formShip.submit();"> 
       9526942</a> 
     </th> 

我試圖讓9526942

我已經試過:

imo = driver.find_element_by_xpath("//*[contains(text(), 'document.formShip.P_IMO.value')]") 

,環顧四周here,但不知道這是什麼元素。我試圖尋找類hidden-sm hidden-xs,不得要領:

imo = driver.find_element_by_class_name('hidden-sm hidden-xs') 
+0

你不會在乎泄露它是什麼網頁,是嗎?它似乎是關於一艘集裝箱船。 –

+0

@BillBell - 是的 - 它來自www.equasis.org,AFAIK你需要一個登錄(通過[這裏]找到該網站(https://www.marineinsight.com/tech/what-is-equasis-shipping-database/ )我只是想找一個快速的方法來獲取各種船舶的國際海事組織號碼(我已經四處尋找APIs,並且有一些,我只是通過這種方式得出的結果將是最快的,因爲我反正使用該站點)。 – BruceWayne

+0

I應該知道! –

回答

1

,如果你想獲得你需要使用的.text文本。 .text方法可以和一些webelement一起使用。

在您嘗試的第一個示例中,您正在使用text()傳遞不同的參數。通常當你使用text()時,你需要傳遞關閉標籤和打開標籤(你在屏幕上看到的文本)之間的值

你只需試試這個。

imo = driver.find_element_by_xpath(.//tr[@class='hidden-sm hidden-xs']).text 
+0

這是有道理的,但我得到一個'無效的語法'錯誤與'@'突出顯示 – BruceWayne

+0

感謝您的編輯 - 仍然同樣的錯誤與'.'突出顯示我注意我編輯我的OP包括它是在一個表格中,我用'imo = driver.find_element_by_xpath(「// table [@ class ='table table-striped']」)。text來獲取某處,但它返回了一堆信息。得到那個特定的號碼編輯:哦!到達那裏!我想我可以使用這個,然後解析出它的附加信息s:'imo = driver.find_element_by_xpath(「// tr [@ class ='hidden-sm hidden-xs']」)。text' – BruceWayne

+1

在您的示例td中使用帶有結束標記的.text 。試着爲你的td標籤寫動態xpath,並用.text。 imo = driver.find_element_by_xpath(.// tr [@ class ='hidden-sm hidden-xs']/td).text 注意:確保變量imo應該是字符串類型。 –