- Автор темы
- #1
Подскажите решение для парсинга Title страниц сайта + что бы URL тоже спарсивал, нужно это для составление анкор листов да и еще много для чего пригодится.
Хочется, что бы было так - Запускаешь парсер, указываешь ему адрес сайта, или страницу с xml картой сайта и парсер формирует текстовый файл со всеми ссылками + Title страниц сайта в таком виде -
Title1|url страницы1
Title2|url страницы2
Title3|url страницы3
Title4|url страницы4
...
Я нашел одно решение на PHP, но он так тормозит сайт, когда его парсит, что сервер не выдерживает и ложится (хотя может это было случайное совпадение, но мне так не показалось)
Вот его код -
Подскажите, может код нужно както поправить, или у кого-нибудь есть уже готовое, нормально работающее решение?
Хочется, что бы было так - Запускаешь парсер, указываешь ему адрес сайта, или страницу с xml картой сайта и парсер формирует текстовый файл со всеми ссылками + Title страниц сайта в таком виде -
Title1|url страницы1
Title2|url страницы2
Title3|url страницы3
Title4|url страницы4
...
Я нашел одно решение на PHP, но он так тормозит сайт, когда его парсит, что сервер не выдерживает и ложится (хотя может это было случайное совпадение, но мне так не показалось)
Вот его код -
Код:
<?php
$url = "сюда пишем адрес на XML карту сайта";
function FetchUrl($url, $postvars, $timeout, $ref, $blank){
sleep($timeout);
echo @date("r")." fetching $url \r\n";
$ch = curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_TIMEOUT,30);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, trim($url));
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
$result = curl_exec($ch);
if($blank == "1"){
$result = preg_replace("/\n/", "", $result);
$result = preg_replace("/\r/", "", $result);
}
curl_close($ch);
return $result;
}
$page = FetchUrl($url, NULL, NULL, NULL, NULL);
preg_match_all("!<loc>(.*?)<\/loc>!si", $page, $out);
foreach($out[1] as $link){
$page = FetchUrl($link, NULL, NULL, NULL, NULL);
preg_match("!<title>(.*?)<\/title>!si", $page, $tit);
exec("echo '".$link."|".trim($tit[1])."' >> pars_title.txt");
}
?>