【发布时间】:2011-12-29 14:38:13
【问题描述】:
我遇到了 Simple PHP DOM Parser 的问题。我基本上必须为图像及其标题抓取目录站点。
该网站是http://pinesite.com.
我想出了下面的代码来做这件事(这将通过 AJAX 调用):
<?php
include ('simple_html_dom.php');
$function = $_GET['function'];
switch($function) {
case 'subcat':
$maincat = $_GET['cat'];
$url = "http://www.pinesite.com/meubelen/index.php?".$maincat."&lang=de";
$html = file_get_html($url);
$data = $html->find('.box_166_content .act_path li a');
$output ="";
foreach ($data as $subcat) {
$title = $subcat->plaintext;
$href = $subcat->href;
$link['title'] = $title;
$link['href'] =substr($href,10);
$output[] = $link;
}
echo json_encode($output);
$html->clear();
unset($html);
unset($url);
break;
case 'images':
$subcat = $_GET['subcat'];
$url = "http://www.pinesite.com/meubelen/index.php?".$subcat;
$html = file_get_html($url);
$iframe = $html->find('#the_iframe',0);
$url2 = $iframe->src;
$html->clear();
unset($html);
$html2 = file_get_html("http://www.pinesite.com/meubelen/".$url2);
$titles = $html2->find('p');
$images = $html2->find('img');
$output='';
$i=0;
foreach ($images as $image) {
$item['title'] = $titles[$i]->plaintext;
$item['thumb'] = $image->src;
$item['image'] = str_replace('thumb_','',$image->src);
$output[] = $item;
$i++;
}
echo json_encode($output);
break;
}
?>
这就是“函数”文件,不起作用的部分是最后一种情况。
我不知道这里出了什么问题,所以我在一个单独的文件中测试了它(最后一种情况)(我把它从 iFrame 获得的 URL 放入了(该部分确实有效):
<?php
include_once "simple_html_dom.php";
$fullurl = "http://www.pinesite.com/meubelen/prog/browse.php?taal=nl&groep=18&subgroep=26";
$html = file_get_html($fullurl);
$titles = $html->find('p');
$images = $html->find('img');
$output='';
$i=0;
foreach ($images as $image) {
$item['title'] = $titles[$i]->plaintext;
$item['thumb'] = $image->src;
$item['image'] = str_replace('thumb_','',$image->src);
$output[] =$item;
$i++;
}
echo json_encode($output);
?>
就像我说的那样,第一部分应该返回与第二部分相同的结果(如果添加 ?function=images&subcat=dichte-kast),但事实并非如此。我猜是因为我多次使用解析器。
有人给我建议吗?
【问题讨论】:
-
您实际上没有检查过 url 检索是否有效。
$url2实际上有一个有效的网址吗?$html2有一些页面内容吗?您的脚本完全取决于服务器的网络连接是否稳定以及远程站点是否可用,没有任何错误的余地。 -
我知道 :),这只是对抓取的测试,我会在它上线之前解决所有问题。
标签: php parsing screen-scraping simple-html-dom