Нужен грабер ссылок

se_home
На сайте с 17.01.2007
Offline
84
2401

Нужна какая-то программа, в которую вводишь список урлов, а она сохраняет из этих страниц все ссылки в txt файл, каждую ссылку с новой строки. Может есть уже готовое решение? Подскажите, кто знает...

I
На сайте с 04.06.2007
Offline
61
#1
se_home:
Нужна какая-то программа, в которую вводишь список урлов, а она сохраняет из этих страниц все ссылки в txt файл, каждую ссылку с новой строки. Может есть уже готовое решение? Подскажите, кто знает...

на 5м php типа того

	$urls=file("spisok.txt");	

foreach($urls as $url)
{
$content=file_get_contents(trim($url));
$dom = new DOMDocument;
if ($dom->loadHTML($content))
{
$as = $dom->getElementsByTagName("a");
foreach ($as as $a)
{
$allurl.=$a->getAttribute('href')."\r\n";
}
}
}
$handle = fopen("endfile.txt", 'w');
fwrite($handle, $allurl);
se_home
На сайте с 17.01.2007
Offline
84
#2

Instructor, спасибо. Работает!

Только почему-то ошибки выдает. Или так и должно быть?

И еще - как быть в тех случаях, когда надо собрать неактивные ссылки на указанных страницах?

ГА
На сайте с 21.12.2006
Offline
128
#3
И еще - как быть в тех случаях, когда надо собрать неактивные ссылки на указанных страницах?

weblancer.net

free-lance.ru

Jeck
На сайте с 20.07.2006
Offline
82
#4

А можно вот так... Ещё и ссылки в абсолютные преобразовав.

function correct_link($home_link,$link) {

if (!preg_match("#^http://#",$link)) {
$strip_link = preg_replace("#\?.*?$#","",$home_link);
$home_link = preg_replace("#^(.*/).*?$#","\\1",$home_link);
preg_match("#^(?:http://)?(.*?)/(.*)/?.*?$#",$home_link,$match);
if ($link{0} == "?") {
$link = $strip_link.$link;
}
$link = preg_replace("#/.*//#is","/","/".$match[2].$link);

$path = array();
$pathA = explode('/', $link);
if (!$pathA[0])
$path[] = '';
foreach ($pathA AS $key => $dir) {
if ($dir == '..') {
if (end($result) == '..') {
$path[] = '..';
} elseif (!array_pop($path)) {
$path[] = '..';
}
} elseif ($dir && $dir != '.') {
$path[] = $dir;
}
}
if (!end($pathA))
$result[] = '';
$path = implode('/', $path);

$link = "http://".$match[1].$path;
}
return $link;
}

$url = "http://jeck.ws/";
$page = file_get_contents($url);

preg_match_all("'<\s*a\s.*?href\s*=\s*([\"\'])?(?(1) (.*?)\\1 | ([^\s\>]+))'isx",$page,$links);
$links = $links[2];

foreach ($links as $n => $link) {
$links[$n] = correct_link($url,$link);
}

$links = array_values(array_unique($links));
Мой блог (http://jeck.ru)
I
На сайте с 04.06.2007
Offline
61
#5
se_home:

Только почему-то ошибки выдает. Или так и должно быть?

Это не ошибки, это варнинги что html кривой.

se_home:

И еще - как быть в тех случаях, когда надо собрать неактивные ссылки на указанных страницах?

Неактивные это какие?

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#6
Неактивные это какие?

это которые просто написаны, но не заключены в <a> </a>

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
I
На сайте с 04.06.2007
Offline
61
#7
LEOnidUKG:
это которые просто написаны, но не заключены в <a> </a>

По моему это называется УРЛ, а не ссылка. Если надо выбрать все урлы со страницы, то делается это еще проще.

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#8
Instructor:
По моему это называется УРЛ, а не ссылка. Если надо выбрать все урлы со страницы, то делается это еще проще.

ну вот мне кажеться ТС и нужно все Урлы сграбить со страницы.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий