Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: PHP Парсер. Как скопированы данные отображать по ссылкам на отдельных страницах?
Форумы портала PHP.SU » Клиентская разработка » Программное обеспечение » PHP Парсер. Как скопированы данные отображать по ссылкам на отдельных страницах?

Страниц (1): [1]
 

1. Roma1 - 10 Июня, 2017 - 17:06:23 - перейти к сообщению
Я сделал парсер который копирует заголовки с каждой публикации на главной странице сайта. Также парсер копирует ссылки на каждую публикацию, это для того чтобы в дальнейшем парсить содержание публикаций, ну и конечно содержание публикаций парсер тоже парсить.

В результате на экране я получил список заголовков и под заголовками информацию которая находилась внутри статьи, то есть содержание публикации которую я парсил за ссылками.

Как мне сделать так, чтобы каждый заголовок стал автоматически ссылкой а информация которую я парсил отображалась по этой ссылке тоесть на новой странице?

Код парсера:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. header('Content-type: text/html; charset=utf-8');
  3. require 'phpQuery.php';
  4.  
  5. function parseArticle($url){
  6.     $file = file_get_contents($url);
  7.     $doc = phpQuery::newDocument($file);
  8.     $text = $doc->find('.post-body')->html(); //парсинг содержания публикаций (по ссылками)
  9.     print_arr($text);
  10. }
  11.  
  12.  
  13. function print_arr($arr){
  14.   echo '<pre>' . print_r($arr, true) . '</pre>';
  15. }
  16.  
  17. $url = 'http://goruzont.blogspot.com/';
  18. $file = file_get_contents($url);
  19.  
  20. $doc = phpQuery::newDocument($file);
  21.  
  22. foreach($doc->find('.blog-posts .post-outer .post') as $article){
  23.     $article = pq($article);
  24.     $text = $article->find('.entry-title a')->html(); //парсинг заголовков
  25.     print_arr($text);
  26.     $texturl = $article->find('.entry-title a')->attr('href'); //парсинг ссылок
  27.     parseArticle($texturl);
  28.    
  29.  
  30. }
  31. ?>
2. Vladimir Kheifets - 12 Июня, 2017 - 13:18:44 - перейти к сообщению
Цитата:
Как мне сделать так, чтобы каждый заголовок стал автоматически ссылкой а информация которую я парсил отображалась по этой ссылке тоесть на новой странице?


Попробуйте передавать данные через сессию.
Примерно так:


PHP:
скопировать код в буфер обмена
  1.  
  2.   <?PHP
  3.     session_start();    
  4.     header('Content-type: text/html; charset=utf-8');
  5.     require 'phpQuery.php';
  6.      
  7.     function parseArticle($url){
  8.         $file = file_get_contents($url);
  9.         $doc = phpQuery::newDocument($file);
  10.         $text = $doc->find('.post-body')->html(); //парсинг содержания публикаций (по ссылками)
  11.         print_arr($text);
  12.     }
  13.      
  14.      
  15.     function print_arr($arr){
  16.       echo '<pre>' . print_r($arr, true) . '</pre>';
  17.     }
  18.      
  19.     $url = 'http://goruzont.blogspot.com/';
  20.     $file = file_get_contents($url);
  21.      
  22.     $doc = phpQuery::newDocument($file);
  23.      
  24.     $_SESSION["buf"]=array();    
  25.     $iLink=1;
  26.     foreach($doc->find('.blog-posts .post-outer .post') as $article){
  27.         $article = pq($article);
  28.         $text = $article->find('.entry-title a')->html(); //парсинг заголовков
  29.         print_arr($text);
  30.         $texturl = $article->find('.entry-title a')->attr('href'); //парсинг ссылок
  31.         parseArticle($texturl);
  32.        
  33.        $buf[$iLink]=array($article,$text);
  34.        ?>
  35.        <a href="<?=$texturl."?iLink=$iLink";?>"><?=$text?></a>
  36.        <?
  37.        $iLink++;
  38.     }
  39.     $_SESSION["buf"]=$buf;
  40.     ?>
  41.  
  42.  

 

Powered by ExBB FM 1.0 RC1