Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 解析URL,循环文件获取html(URL),然后获取元素_Php_Arrays_Parsing_Foreach_Simple Html Dom - Fatal编程技术网

Php 解析URL,循环文件获取html(URL),然后获取元素

Php 解析URL,循环文件获取html(URL),然后获取元素,php,arrays,parsing,foreach,simple-html-dom,Php,Arrays,Parsing,Foreach,Simple Html Dom,我有一个网站,我需要分析它 首先,我必须解析页面中所有目录的URL,然后我需要输入所有URL,然后遍历所有URL并再次解析每个页面上的URL,然后遍历所有URL并获取元素“.description div” 我使用的是简单的HTMLDOM 但我有一个问题,当我想通过我第一次解析的所有URL时。 我得到的是空页 include 'simple_html_dom.php'; $catalogs = file_get_html('http://optnow.ru/catalog'); $catalog

我有一个网站,我需要分析它

首先,我必须解析页面中所有目录的URL,然后我需要输入所有URL,然后遍历所有URL并再次解析每个页面上的URL,然后遍历所有URL并获取元素“.description div”

我使用的是简单的HTMLDOM

但我有一个问题,当我想通过我第一次解析的所有URL时。 我得到的是空页

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);
    }
}
我的错在哪里


谢谢。

您需要传递数组,而不是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;
         }
    }
}

$catalogLink[0]作为$CatalogSingleLink如果我打印$CatalogSingleLink,我只会得到一个这样的url字符串?好的,但我只需要得到一个url,然后在每个循环中得到下一个。我需要进行for循环并迭代每个url?@Frunky不,我的意思是,您将分别获得所有url。代码将按照您的预期工作。试试看,我真的不知道为什么我得到的结果是空的。我现在更新问题,谢谢