owner888 / phpspider

《我用爬虫一天时间“偷了”知乎一百万用户,只为证明PHP是世界上最好的语言 》所使用的程序
3.49k stars 1.18k forks source link

文档里的某个xpath不起作用 #152

Open kekeyumuku opened 4 years ago

kekeyumuku commented 4 years ago

文档里的例子如下:

$html =<<<STR
    <div id="demo">
        <span class="tt">bbb</span>
        <span>ccc</span>
        <p rel="pnode">ddd</p>
    </div>
STR;

//获取id为demo的div内容 $data = selector::select($html, "//div[@id='demo']");

print_r($data),运行结果是:

 <span class="tt">bbb</span>
 <span>ccc</span>
  <p rel="pnode">ddd</p>

// 获取class为tt的span内容 $data = selector::select($html, "//div[@class='tt']");

print_r($data),运行结果是空的,啥都打印不出来

// 获取rel为pnode的p内容 $data = selector::select($html, "//div[@rel='pnode']");

print_r($data),运行结果是空的,啥都打印不出来

另外一个例子:

$html =<<<STR
    <td data-value="3.80">3.80</td>    
    <td data-value="3.80">3.80</td>    
    <td data-value="3.80">3.80</td>    
    <td data-value="3.80">3.80</td>    
STR;

// 获取 td 的 data-value 属性 $data = selector::select($html, "//td@data-value");

print_r($data),运行结果是空的,啥都打印不出来

为什么会这样呢,是php配置需要修改吗,还是其他什么原因呢?麻烦您能帮我解答一下吗,非常感谢。

xjimmy906 commented 4 years ago
$html =<<<STR
    <td data-value="3.80">3.80</td>    
    <td data-value="3.80">3.80</td>    
    <td data-value="3.80">3.80</td>    
    <td data-value="3.80">3.80</td>    
STR;

// 获取 td 的 data-value 属性
$data = selector::select($html, "//td@data-value");

这个打印selector::$error,显示的是xpath语法错误 @owner888 是森么问题导致的 ?这个xpath应该没写错啊

xjimmy906 commented 4 years ago

// 获取 td 的 data-value 属性 文档的这个$data = selector::select($html, "//td@data-value");写法错误

正确写法为$data = selector::select($html, "//td/@data-value");

@kekeyumuku @owner888 @awebc

owner888 commented 3 years ago

感谢支持,我去改过来