Проблемы с граббером

Статус
В этой теме нельзя размещать новые ответы.

AsanBosam

Постоялец
Регистрация
1 Мар 2009
Сообщения
139
Реакции
11
Хочу сделать граб ключей с Для просмотра ссылки Войди или Зарегистрируйся уже наверно скриптов-грабберов 10 попытался переделать, ничего не выходит помогите плиз.

Первая попытка
PHP:
<?php 
$source = file_get_contents('http://www.for-ever.cn/nod32/');

if (!$source) die();

$start = '<span id="nod32ids" class="normaltext">';
$end = '</span>';

preg_match('|'.$start.'(.*?)'.$end.'|is', $source, $match);

die(print_r($match));

}
?>

И вторая и ни одна не дала успеха :mad:
PHP:
<?php 
$url = "http://www.for-ever.cn/nod32/"; 
$content = file_get_contents($url); 
$pattern = "@<table>(.*)</table>@isU"; 
preg_match_all($pattern, $content, $out); 
foreach($out[0] as $info)
{
echo("$info");
}
?>
 
Вроде как все работает, но ОЧЕНЬ долгая загрузка, в denwer показывает, а вот appserv выдает ошибку
 
А в чем может быть проблема?
 
irip я думаю проблема изза того что сервер далеко и очень медленно идет загрузка сайта, и наверно еще стоят какие нить ограничения в apache вот только не знаю какие =(
 
Накалякал вот такой вариант:
PHP:
<?php
$source = file_get_contents('http://www.for-ever.cn/nod32/'); 
if((string)$source){
	if(preg_match_all('/<font color="#(008003|ff0003)">(.*)?<\/font>/Usi',$source,$match)){
		print_r($match[2]);
	}
}
?>

Кстати, ответ сервера с небольшой задержкой (примерно 1-2 сек). Но на это можно закрыть глаза, если кешировать полученные ключики. ;)

С кешированием получится примерно так:
PHP:
<?php
$cachetime = "60"; //минут 
$cachefile = "cachefile.tmp";
$output = array();

if(!is_readable($cachefile) || filemtime($cachefile) < time()-$cachetime*60){
	$source = file_get_contents('http://www.for-ever.cn/nod32/'); 
	if((string)$source){
		if(preg_match_all('/<font color="#(008003|ff0003)">(.*)?<\/font>/Usi',$source,$match)){
			$output = $match[2];
			unset($match);
			file_put_contents($cachefile,implode("\n",$output));
		}
	}
}else{
	$output = file($cachefile);
}

print_r($output);
?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху