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 :: Версия для печати :: Вопрос по file_get_contents
Форумы портала PHP.SU » » Вопросы новичков » Вопрос по file_get_contents

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

1. netclan - 15 Января, 2013 - 06:07:30 - перейти к сообщению
Здравствуйте, уважаемые форумчане!
Решил сделать sitemap, для получения контента одной страницы, можно использовать часть кода:
PHP:
скопировать код в буфер обмена
  1.  
  2. $content = file_get_contents("http://адрес_сайта/ррр.html");
  3.  

а вот вопрос заключается в том, что нужно получить все страницы и их обработать, а не одну, так вот как зациклить и получить ссылки с домена http://адрес_сайта? Не понял
2. avtor.fox - 15 Января, 2013 - 07:26:04 - перейти к сообщению
Парсите страницу на url. Сохраняете массив ссылок. Циклом проходите по полученным ссылкам. В том же цикле парсите страницы на ссылки, пишете в массив ссылок недостающие (найденные на других страницах). Имеете массив ссылок, обрабатываете.
3. netclan - 15 Января, 2013 - 07:38:55 - перейти к сообщению
[quote=avtor.fox][/quote]
Не подскажите наглядно по этой части "Циклом проходите по полученным ссылкам.", не совсем пойму как это?
4. avtor.fox - 15 Января, 2013 - 07:50:00 - перейти к сообщению
netclan
А теперь уточните для себя. Вам нужно получить уникальные ссылки ресурса или контент по уникальным ссылкам ресурса?
5. netclan - 15 Января, 2013 - 07:54:56 - перейти к сообщению
avtor.fox пишет:
netclan
А теперь уточните для себя. Вам нужно получить уникальные ссылки ресурса или контент по уникальным ссылкам ресурса?

Уникальные ссылки, чтобы потом записать их все в файл вида:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <url>
  2.       <loc>http://www.example.com/</loc>
  3.       <lastmod>2005-01-01</lastmod>
  4.       <changefreq>monthly</changefreq>
  5.       <priority>0.8</priority>
  6.    </url>
6. avtor.fox - 15 Января, 2013 - 08:16:44 - перейти к сообщению
netclan
Ещё раз -
1. Открываете первую страницу (вручную забитую);
2. Парсите её на ссылки;
3. Пишете полученные ссылки в массив;
3.0. Пробегаемся по полученным ссылкам;
3.1. Парсите полученные страницы по ссылкам;
3.2. Извлекаете ссылки из страниц;
3.3. Проверяете ссылки на уникальность. Если Вы уже прошлись по всем страницам и новых ссылок больше нет, выходите из цикла.

Если Вам нужен готовый скрипт, то Вам не в эту тему и скорее всего не бесплатно.
7. netclan - 15 Января, 2013 - 08:27:04 - перейти к сообщению
avtor.fox пишет:
netclan
3.0. Пробегаемся по полученным ссылкам;

Может я неясно выразился. Я могу распарсить одну страницу и получить всю необходимую информацию, но не пойму как после получения массива с ссылками, пробежаться по ссылкам и получить с них информацию. Иными словами как зациклить получение контента по полученным ссылкам в массиве?
8. avtor.fox - 15 Января, 2013 - 08:48:08 - перейти к сообщению
netclan, действительно беда.

PHP:
скопировать код в буфер обмена
  1. function recursion($sl){
  2.         static $msTime;
  3.         if(is_null($msTime)){ $msTime = microtime(1); }
  4.         if($sl == 0){
  5.                 echo 'Достиг нуля за '.round(microtime(1) - $msTime, 3);
  6.         }
  7.         else{
  8.                 recursion($sl - 1);
  9.         }
  10. }
  11. recursion(50000);

Как пример.
9. DelphinPRO - 15 Января, 2013 - 10:40:56 - перейти к сообщению
avtor.fox пишет:
3.3. Проверяете ссылки на уникальность.

а также не забываем проверять внешняя это ссылка или внутренняя. Внешние - пропускаем.
(Добавление)
писал однажды простой парсер сайта.

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


тухлыми помидорами не кидаться - скрипт писаля для разовой задачи, с которой он прекрасно справился. Улыбка

 

Powered by ExBB FM 1.0 RC1