这是我的代码:
$res = file_get_contents("http://www.lenzor.com/photo/search/index/type/user/%D8%B9%D9%84%DB%8C//text/%D9%81%D8%A7%D8%B7%D9%85%D9%87");
$doc = new \DOMDocument();
@$doc->loadHTMLFile($res);
$xpath = new \DOMXpath($doc);
$links = $xpath->query("//ul[@class='user_box']/li");
$result = array();
if (!is_null($links)) {
foreach ($links as $link) {
$href = $link->getAttribute('class');
$result[] = [$href];
}
}
print_r($result);
Here是我正在处理的内容。我的意思是它是echo $res
的结果。
好的,我的代码结果是一个空数组。因此$links
为空,foreach
将不会执行。为什么?为什么//ul[@class='user_box']/li
查询与DOM不匹配?
预期结果是一个数组包含li
s。的类属性。
答案 0 :(得分:1)
试试这个,希望这会有所帮助。您的代码中几乎没有错误。
1。您应该像这样
'//ul[@class="user_box clearfix"]/li'
进行搜索,因为该HTML源的class="user_box clearfix"
类属性包含两个类。2。您应该使用
loadHTML
代替loadHTMLFile
。
<?php
ini_set('display_errors', 1);
libxml_use_internal_errors(true);
$res = file_get_contents("http://www.lenzor.com/photo/search/index/type/user/%D8%B9%D9%84%DB%8C//text/%D9%81%D8%A7%D8%B7%D9%85%D9%87");
$doc = new \DOMDocument();
$doc->loadHTML($res);
$xpath = new \DOMXpath($doc);
$links = $xpath->query('//ul[@class="user_box clearfix"]/li');
$result = array();
if (!is_null($links)) {
foreach ($links as $link) {
$href = $link->getAttribute('class');
$result[] = [$href];
}
}
print_r($result);