我正在使用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)”“}
答案 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"
...