解析网址,循环file_get_html(网址),然后获取元素

时间:2017-03-04 06:49:59

标签: php arrays parsing foreach simple-html-dom

我有一个网站,我需要解析它。

首先,我必须解析页面中所有目录的网址,然后我需要输入所有网址然后再遍历所有网址并再次解析每个网页上的网址,然后浏览所有网址并获取元素( ' .description div')。

我使用简单的html dom。

但是当我想要浏览我第一次解析的所有网址时,我有一个问题。 我得到了空白页

include 'simple_html_dom.php';
$catalogs = file_get_html('http://optnow.ru/catalog');
$catalogLink = [];
if(!empty($catalogs)) {
    foreach( $catalogs->find('div.cat-name a') as $catalog) {
         $catalogUrl = 'http://optnow.ru/' . $catalog->href . '?page=0';
         $catalogLink[] = $catalogUrl;
         $catalogHtml = file_get_html($catalogUrl);
         $productsLink = $catalogHtml->find('.link-pv-name');
         print_r($productsLink->href);
    }
}

我的错误在哪里?

感谢。

1 个答案:

答案 0 :(得分:1)

你需要传递数组,而不是foreach中的单个元素:

include 'simple_html_dom.php';
$catalog = file_get_html('http://optnow.ru/catalog');
$catalogLink = [];
if(!empty($catalog)) {
    foreach( $catalog->find('div.cat-name a') as $catalogHref) {
         $myLink = 'http://optnow.ru/' . $catalogHref->href . '?page=0';
         $catalogLink[] = $myLink;
         echo '<pre>';
         print_r($myLink);
         echo '</pre>';
    }
    foreach ($catalogLink as $catalogSingleLink ) {
         if(!empty($catalogSingleLink)) {
             $catalogHtml = file_get_html($catalogSingleLink);
             $catalogProduct = $catalogHtml->find('.link-pv-name');
             echo $catalogProduct->href;
         }
    }
}