[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как собрать все ссылки с сайта ?
poter
Всем привет.Нужно, чтобы программа собирала все ссылки с сайта, а желатльно бы указывать ограничение сколько страниц сканировать, сколько не пробывал, все безуспешно. Может у кого нибудь есть готовые заготовки или кто нибудь может помочь ?очень нужно =(
poter
спасибо, но чем мне это поможет ?
kaww
poter
, ну,например, wget -r http://example.com -o log запишет в файл log все посещенные ссылки, правда еще и выкачает их, если это не нужно, то смотри мануал по ссылке выше
poter
разве это php скрипт ?
kaww
Цитата (poter @ 8.04.2013 - 15:38)
разве это php скрипт ?

ну как бы :
Цитата (poter @ 8.04.2013 - 15:09)
Нужно, чтобы программа собирала все ссылки с сайта, а желатльно бы указывать ограничение сколько страниц сканировать

wget - как раз таки программа, причем удовлетворяющая всем требованиям из первого поста
poter
так эта тема в разделе php
poter
если знаешь решение на php, то пожалуйста поделись
kaww
Цитата (poter @ 8.04.2013 - 15:43)
так эта тема в разделе php

а так?
<php
`wget -r http://example.com -o log`

:)

если хочется на пхп тогда Simple HTML DOM вам в помощь
poter
да я та то и начинал делать, но потом не знаю как шагать по страницам, первыую прочитал, а что дальше, нужно делать реурсию или цикл... В интернете искал подобные скрипты и ни одного рабочего не нашел =(
poter
а вы не можете сделать простой набросок, пожалуйста ?
kaww
Логика должна быть такая:
имеется какая-то очередь ссылок (массив), при запуске скрипта в ней всего одна ссылк, та с которой начинаете парсить (главная сайта). Все ссылки которые нашли на странице добавляете в очередь (если ее там еще нет). После посещения ссылки помечаете ее как посещенную. Когда ссылки в массиве закончатся значит все прошли

$storage = array(
0 => array(
'link' => 'http://example.com',
'visited' => false
)
)

for ($i=0;$i < count($storage);$i++) {

if ($storage[$i]['visited']) {

continue;
}
$page = new Page($storage[$i]['link']);//вымышленный класс : )
$storage[$i]['visited'] = true;
pushS($page->getAllLinks());//и функция тоже, она добавляет новые ссылки в $stirage
}

разумеется массив периодически писать в файл. чтобы можно было продолжить если скрипт неожиданно завершится
poter
а как сделать, чтоб он не переходил по внешним ссылкам ? Но в массив добавлять, и желательно ходить только по тем ссылкам, которые без get параметров
vbivbi
Может Вам Бабочка поможет:
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.