PHP中的DOMXPath返回空字符串

时间:2018-12-31 08:07:36

标签: php xpath

我正在使用xpath进行网络抓取。我可以从某些站点(雅虎等)获得​​预期结果,但是我无法在特定页面上获取数据。我只会得到空字符串。我怎么了?

 $html = file_get_contents('http://finance.naver.com/item/frgn.nhn?code=005930');
 $doc = new DOMDocument();
 libxml_use_internal_errors(TRUE);  

 if(!empty($html)){ 

     @$doc->loadHTML($html);
     libxml_clear_errors(); 
     $xpath = new DOMXPath($doc);        

     $row = $xpath->query('//span[@class="tah p10 gray03"]') ;      

     if($row->length > 0) {

            foreach($row as $v){

                $stock[] = $v->nodeValue  ; 

            }     

           var_dump($stock) ;

        } 
}
  • URL内容:2018.12.28

  • 预期结果:2018.12.28等

  • 实际结果:array(20){[0] =>字符串(0)“” [1] =>字符串(0)“” [2] =>字符串(0)“” [3] =>字符串(0)“” [4] =>字符串(0)“” [5] =>字符串(0)“” [6] =>字符串(0)“” [7] =>字符串(0) “” [8] =>字符串(0)“” [9] =>字符串(0)“” [10] =>字符串(0)“” [11] =>字符串(0)“” [12] = > string(0)“” [13] => string(0)“” [14] => string(0)“” [15] => string(0)“” [16] => string(0)“ “ [17] =>字符串(0)”“ [18] =>字符串(0)”“ [19] =>字符串(0)”“}

1 个答案:

答案 0 :(得分:0)

我不了解PHP,但是我发现它may be a bug-因此您需要对$html UTF-8进行编码。

我在第一行之后添加了以下行:

$html = mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8");

它将$html转换为UTF-8。之后,我可以看到结果:

array(20) {
  [0]=>
  string(10) "2018.12.28"
  [1]=>
  string(10) "2018.12.27"
...