[英]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.