_xpath 精准使用规则

使用text()来做标记,用来确定位置.

测试文本

    <tbody>
    <tr class="result1">
        <th class="field-name">Type</th>
        <td>Electronic Thesis or Dissertation</td>
    </tr>
    <tr class="result2">
        <th class="field-name">Type</th>
        <td>Text</td>
    </tr>
    <tr class="result1">
        <th class="field-name">Type</th>
        <td>Image</td>
    </tr>
    <tr class="result2">
        <th class="field-name">Type</th>
        <td>StillImage</td>
    </tr>
    <tr class="result1">
        <th class="field-name">Language</th>
        <td>fr</td>
    </tr>
    <tr class="result2">
        <th class="field-name">Identifier</th>
        <td>
            <a onclick="ga('send', 'event', 'External-link', 'Identifier', '/full.php?id=1183922'); return logDownload('1183922');"
               href="http://www.theses.fr/2016SACLS038"
               title="View original record">http://www.theses.fr/2016SACLS038</a></td>
    </tr>
    </tbody>
</table>
测试1
//th[.='Type'] # 获取到所有文本为Type的值.

我们为了获取,第一个文本


文本1

需要在此基础上我们获取它的父节点下面的td的文本内容../td/text(),我们只需要获取第一个值加一个坐标.

(//th[.='Type']/../td/text())[1]  # 得到预期的结果 Electronic Thesis or Dissertation
使用属性的多值匹配 使用contains

倘若属性的值发生变化.但是存在一定规律,如下图class='result1'或者是class='result2'之类的.我们需要获取他们的内容.

<tr class="result1">
    <th class="field-name">Type</th>
    <td>Electronic Thesis or Dissertation</td>
</tr>
<tr class="result2">
    <th class="field-name">Type</th>
    <td>Text</td>
</tr>
<tr class="result1">
    <th class="field-name">Type</th>
    <td>Image</td>
</tr>
<tr class="result2">
    <th class="field-name">Type</th>
    <td>StillImage</td>
</tr>
<tr class="result1">
    <th class="field-name">Language</th>
    <td>fr</td>
</tr>

xpath 语法

//tr[contains(@class,'result')] # 得到所有class 包含result的语句
获取多个参数
<div class="accordion-tabbed__tab-mobile ">
    <a href="#" data-id="a2" data-db-target-for="a2" title="Costa M. L."
       class="author-name accordion-tabbed__control visible-x"><span>Costa M. L.</span><i aria-hidden="true"
                                                                                          class="icon-arrow_d_n"></i></a>
    <div data-db-target-of="a2" class="author-info accordion-tabbed__content"><p>PhD, FRCS (Tr &amp; Orth), Clinical
        Senior Lecturer</p>
        <p class="author-type"></p>
        <p></p>
        <p>1Clinical Sciences Institute University of Warwick Medical School, Clinical Sciences Building, University
            Hospital, Clifford Bridge Road, Coventry CV2 2DX, UK.</p>
        <div class="bottom-info"><p><a href="/author/Costa%2C+M+L">
            Search for more papers by this author
        </a></p></div>
    </div>
</div>

demo

需要一条xpath获取他们的名字,职位,跟机构.

//div[a/span/text() and div/p/text() and div/div/p/a/text()]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,246评论 19 139
  • 使用selenium进行自动化时少不了对元素进行定位,但目前前端大多使用框架vue,angular等,很多元素并没...
    菠了个萝阅读 9,787评论 1 5
  • 跨境电商B2B、B2C这些词汇近年来非常流行,貌似只要不在B2B和B2C的大平台上注个册,不懂这些知识都不好意思说...
    外贸大叔阅读 140评论 0 0
  • 从小的时候就听过,人生三件事。Health、wealth and love!然而爱是其中最重要的!我一直不相信!直...
    梁大庆阅读 309评论 1 1
  • 早上醒来,湿气袭来,立秋已经一个月了,这些天,阴雨绵绵,像极了信阳的天,时间在指缝间悄悄流失,转眼间又是一个开学季...
    晴天会笑阅读 338评论 1 3