find() 这里是simple_html_dom库的一个函数,当给定 id/class 时,它应该返回 dom node 元素。
当$id是"fk-list-MP3-Player-/-IPods"时,$urlFetched->find("#".$id)
总是无法找到并返回一些东西。我猜问题出在正斜杠和simple_html_dom上,因为其他 id 和 url(截图)没有问题。我该怎么办?我的程序几乎是完整的,依赖于简单的HTML Dom。
谢谢
代码:
$urlAndIds = array(
array("http://www.flipkart.com/audio" , array('fk-list-Home-Audio', htmlentities("fk-list-MP3-Players-/-IPods"), 'fk-list-Accessories'),array('ALL','AllBrands')) );
foreach($urlAndIds as $uAI) {
$url = file_get_contents($uAI[0]) ;
$urlFetched = str_get_html($url) ;
if ($url == false){
echo 'page '.$uAI[0] . " not found" ."<br>" ."<br>";
} else {
foreach ($uAI[1] as $id) {
$idFound = $urlFetched->find("#".$id) ;
if(!$idFound) {
echo 'In page '.$uAI[0].' -id not found- '.$id ."<br>";
}
}
}
}
斜
杠被解释为 XPath 表达式的一部分,因此它正在寻找一个名为 -IPods
的子元素。 也没有 XPath "quote" 类型的函数。 我不确定添加反斜杠是否有效,但您可能更容易使用带有 id: 的普通属性选择器[@id='fk-list-MP3-Players-/-IPods']