Xpath 为什么需要//而不是/

Xpath 为什么需要//而不是/,xpath,scrapy,Xpath,Scrapy,考虑以下HTML代码: <html> <head> <title>Example website</title> </head> <body> <div> <table id='tableid'> <tr> <td> <a href="/blabla" title="Blabla1">Blabla1&l

考虑以下HTML代码:

<html>
<head>      
  <title>Example website</title>
</head>
 <body>    
  <div>
  <table id='tableid'>
   <tr>
    <td>
        <a href="/blabla" title="Blabla1">Blabla1</a>
        <a href="/blabla" title="Blabla1">Blabla2</a>
        <a href="/blabla" title="Blabla1">Blabla3</a>
        <a href="/blabla" title="Blabla1">Blabla4</a>
    </td>
        <td>col2</td>
        <td>col3</td>
        <td>col4</td>
   </tr>
  </table>
 </body>
</html>
如果使用单张/桌子后面?此时我已经在表节点上了(它应该成为我的“根”),所以/应该足够了


提前谢谢

table[@id=“tableid”]之后的单个
/
如果您只想要
table
的直系子对象,则可以使用。要获取
表[@id=“tableid”]
的任何后代
a
,您需要
//a

/
/genderant或self::node()/

子体或自轴包含上下文节点和上下文节点的子体。由于将上下文节点建立为
table[@id=“tableid”]
,因此除了作为
table[@id=“tableid”]
的后代的元素之外,不会得到任何
a
元素

将查找所有
元素,其
id
等于
tableid

//a/@href
在此之后添加将在
元素中的任何位置(子、孙……)查找所有
元素

如果您确定所需的所有
元素都位于第一个
(表-->tr-->td)的下方,则可以跳过第二个
/
,然后执行以下操作:

//table[@id="tableid"]/tr[1]/td[1]/a/@href
/tr[1]/td[1]
将直接进入
元素

//a/@href
//table[@id="tableid"]/tr[1]/td[1]/a/@href