【发布时间】:2015-12-22 05:09:34
【问题描述】:
我对 selenium 还很陌生,但我越来越好...:)
我正在制作一个从网站中提取数据并将其保存在 Excel 表格中的刮板。
这个网站的结构很糟糕,根本没有id,所有的类都用相同的名字命名,除了类之外,使用的标签和属性很少。 该站点充满了表格,我只需要一个特定的信息 桌子。由于桌子的顺序每天都在变化,因此很难找到它。
网站的结构如下所示:
<div class="table">
<table cellspacing="0" cellpadding="0" border="0">
<thead>
<tr>
<th colspan="4">
<strong>I NEED the bla bla from this table!</strong>
<tbody>
<tr class="even">
<td>01</td>
<td>bla bla</td>
<td>bla bla</td>
<tr class="odd">
<td>02</td>
<td>bla bla</td>
<td>bla bla</td>
</tbody>
</table>
</div>
<div class="table">
<table cellspacing="0" cellpadding="0" border="0">
<thead>
<tr>
<th colspan="4">
<strong>I DON'T need this!</strong>
<tbody>
<tr class="even">
<td>01</td>
<td>bla bla</td>
<td>bla bla</td>
<tr class="odd">
<td>02</td>
<td>bla bla</td>
<td>bla bla</td>
</tbody>
</table>
</div>
当然还有很多其他表我不需要数据,但它们的结构看起来完全一样。
所以我只需要一张表中的数据。我收集相关数据的方式是搜索我需要的字符串(“我需要这个”),然后后退几个节点,然后再次进入 tbody 部分,我最终可以获得“bla bla”文本。 我在 VBA 和 Selenium 中的 XPath 的帮助下做到了这一点。 这是我的代码:
Set my_Element = driver.FindElementsByXPath("(//th[strong='My text'])[1]/../../../tbody/tr[1]/td[2]")
我有两个问题: 1)有什么方法可以使用 driver.FindElementByCss() 命令获得相同的结果? 2) 正如您在我的 Xpath 命令中看到的,我需要输入确切的文本,有什么方法可以使用“包含”命令吗? (我无法让它工作:()
提前感谢您的帮助!
【问题讨论】: