2017-10-10 70 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应该是字符串类型。 –