我对硒很新,但我越来越好......:)
我正在制作一个从网站中提取数据并将其保存在Excel表格中的刮刀。
网站的结构很糟糕,根本没有id,所有的类都是相同的,除了类之外,使用的标签和属性也很少。 该网站充满了表格,我只需要一个特定的信息 表。很难找到它,因为表格的顺序每天都在变化。
网站的结构如下所示:
DLLInitialized
当然还有许多其他表格,我不需要这些数据,但它们的结构看起来完全一样。
所以我只需要一张表中的数据。我收集相关数据的方法是搜索我需要的字符串("我需要这个")然后退回几个节点然后再次进入tbody部分,我最终可以获得&# 34; bla bla"文本。 我在VBA和Selenium的XPath的帮助下这样做。 这是我的代码:
<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>
我有两个问题: 1)有没有办法用driver.FindElementByCss()命令获得相同的结果? 2)正如你在我的Xpath命令中看到的,我需要输入确切的文本,有没有办法使用&#39; contains&#39;命令? (我无法使它工作:()
提前感谢您的帮助!
答案 0 :(得分:0)
这个Xpath找到了一个以“我需要”开头的表,并在第一个之后获得了所有td
//table[.//th/strong[starts-with(.,"I NEED")]]/tbody/tr/td[position()>1]
结果
Element='<td>bla bla</td>'
Element='<td>bla bla</td>'
Element='<td>bla bla</td>'
Element='<td>bla bla</td>'