2017-03-04 112 views
0

我有一个网站,我需要解析它。解析网址,循环file_get_html(网址),然后获取元素

首先,我必须解析页面中的所有目录的URL,然后我需要输入所有的URL,然后遍历所有的URL并再次解析每个页面上的URL,然后遍历所有的URL并获取元素('.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); 
    } 
} 

我的错误在哪里?

感谢。

+0

'$ catalogLink [0] $ catalogSingleLink' – mehulmpt

回答

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; 
     } 
    } 
} 
+0

如果我打印$ catalogSinglLink我会像所有的URL字符串刚http://optnow.ru/categories/istochniki-pitaniya?page=0http://optnow.ru/categories/avtoaksessuary?page=0http://optnow.ru/categories/selfie?page=0http://optnow。 RU /分类/音频aksessuary? – Frunky

+0

.......是...... – mehulmpt

+0

好的,但我只需要获取一个url,然后在每个循环中进行下一步。我需要为()循环和迭代每个url? – Frunky