繁体   English   中英

PHP中的DOMXPath返回空字符串

[英]DOMXPath in PHP return empty strings

我正在使用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] = > string(0)“” [9] => string(0)“” [10] => string(0)“” [11] => string(0)“” [12] => string(0)“ “ [13] =>字符串(0)”“ [14] =>字符串(0)”“ [15] =>字符串(0)”“ [16] =>字符串(0)”“ [17] =>字符串(0)“” [18] =>字符串(0)“” [19] =>字符串(0)“”}

我不了解PHP,但是我发现这可能是一个错误 -因此您需要对$html UTF-8进行编码。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM