我正在URL中进行一些操作。
$paginationPages=array();
$productCount=intval($htmlProductPage->find('div.paging span.itemcount',0)->plaintext);
if($productCount/16>1){
$pagecount=ceil($productCount/16);
for($i=2;$i<=$pagecount;$i++){
$urlSplitArray=explode('.',$productUrl);
$urlSplitCount=count($urlSplitArray);
$urlSplitArray[$urlSplitCount-2].="[".$i."]";
$paginationPages[]= implode('.',$urlSplitArray)."<br>";
}
#print_r($paginationPages);
}
我正在获取foreach中的所有链接以继续进行
foreach($paginationPages as $nextUrl){
#$nextUrl="http://www.100percent.co.nz/kitchen-and-cooking/ovens/freestanding[2].htm";
$htmlProductPage=file_get_html($nextUrl);
foreach($htmlProductPage->find("div.Item") as $element){ //error occurs here
echo $element->outertext;
}
}
变量$nextUrl
的值为
“http://www.100percent.co.nz/kitchen-and-cooking/ovens/freestanding[2].htm”
当我动态传递链接时,我无法找到元素div.Item
。但是当我直接在for循环中分配url时,我能够找到相同的元素。为什么会这样?
答案 0 :(得分:1)
由于这句话,问题正在发生:
$paginationPages[]= implode('.',$urlSplitArray)."<br>";
$paginationPages
的print_r:
Array
(
[0] => http://www.100percent.co.nz/kitchen-and-cooking/ovens/freestanding[2].htm<br>
)
您正在将<br>
元素标记到页面名称的末尾,这意味着无法使用此代码检索该页面:
foreach($paginationPages as $nextUrl){
$htmlProductPage=file_get_html($nextUrl);
我建议在解析页面之前添加file_get_html
已成功检索页面的检查以清除内容。