Всем привет!
Я хочу попробовать написать простейший парсер чисто для себя чтоб понять что и как работает!вроде получилось найти ссылки в тексте но никак не могу в цикле пройтись по всем страницам сайта которого грабим и примеру http://playrun.ru/index.php?id=2&page=клличество страниц в папке с файлами. Так вот.у меня записывается в файл только список ссылок с первой страницы а на 2.3.4 и т.д. Не переходит то есть так http://playrun.ru/index.php?id=2&page=1 - дальше 1 не идет цикл.
вот код <?
$var = 50;
$i = 3;
while(++$i <= $var)
{
$link=file_get_contents('http://playrun.ru/index.php?id=2&page=$i');
preg_match_all('/href="([^"\']*?load\.php\?id=[0-9]+[^"\']*?)&/', $link, $m);
$f = fopen('file1.txt', 'w'); fwrite($f, implode("\n", $m[1])); fclose($f);
}
?>
$link=file_get_contents('http://playrun.ru/index.php?id=2&page=$i'); замени на $link=file_get_contents("http://playrun.ru/index.php?id=2&page=$i");
29 Окт 2010, 13:30Проблема в одинарных кавычках, они не подставляют вместо $i значение а передают $i в запросе
29 Окт 2010, 13:31Warning: file_get_contents(http://playrun.ru/
index.php?id=2&page=2) [function.file-get-
contents]: failed to open stream: HTTP request
failed! HTTP/1.1 404 Not Found in
теперь такая ошибла возникла для каждой переменой $i хотя страница существует и 404 там нет
Пробую так и он только с последней страницы ссылки тащит вот код.может подправишь. <?
$var = 7;
$i = 1;
while(++$i <= $var)
{
$link="http://playrun.ru/index.php?id=2&page=$i";
$page = '';
$f = fopen($link, 'r');
while(!feof($f)) { $link .= fgets($f, 8182);
} fclose($f);
preg_match_all('/href="([^"\']*?load\.php\?id=[0-9]+[^"\']*?)&/', $link, $m);
$f = fopen('file3.txt', 'w'); fwrite($f, implode("\n", $m[1])); fclose($f);
}
?>
for($i=0;$i<7;$i++){
$link = file_get_contents('http://playrun.ru/index.php?id=2&page='.$i);
preg_match_all('/href="([^"\']*?load\.php\?id=[0-9]+[^"\']*?)&/', $link, $m);
$f = fopen('file3.txt', 'w'); fwrite($f, implode("\n", $m[1])); fclose($f);
}
Странно-вроде записал.только с 20 страниц взял вот эти ссылки
load.php?id=241
load.php?id=259
load.php?id=271
load.php?id=287
load.php?id=291
load.php?id=301
load.php?id=312
load.php?id=314
load.php?id=316
load.php?id=332
такое ощущение что тут с записью в цикле не то что то..((потому что как ни пробовал он не больше 10файлов записывает,может проблема связана с массивом ссылок которые записываем?просто я в этом не силен,увиддл пару кодов-объединил.а смылс понимаю процентов на 70% только(
Похоже что запись происходит не с новой строки после выполнения одного прохода а начинает перезаписывать то что уже существует.получается полная лажа.
29 Окт 2010, 14:43