Необходимо нагенерировать ссылки в HTML

Тема в разделе "Веб-дизайн", создана пользователем Kosiak, 15 май 2009.

Статус темы:
Закрыта.
Модераторы: zek24
  1. Kosiak

    Kosiak

    Регистр.:
    12 сен 2006
    Сообщения:
    613
    Симпатии:
    73
    Задача такая.
    1.
    Нужно нагенерировать ссылок, которые идут на увеличение, т.е.:
    mysite.ru/index.php?showtopic=1
    до, скажем:
    mysite.ru/index.php?showtopic=3280
    Каким образом такое можно совершить (и с помощью чего)?

    2. Полученный список попинговать чем-нибудь и автоматически почистить.

    3. Оставшиеся ссылки порезать на страницы, скажем, по 150 ссылок :-]

    Буду благодарен за отзывы :ay:
     
  2. Compressor

    Compressor

    Регистр.:
    31 янв 2009
    Сообщения:
    314
    Симпатии:
    200
    HTML:
    <?
    $url="mysite.ru/index.php?showtopic=";
    $urlend="";
    $count = 3280;
    $file = "linkz.html";
    $f =fopen($file, "a+");
    
    
    for ($i = 1; $i <= $count; $i++) 
    {
    fputs($f,"<a href="."$url"."$i"."$urlend".'">'."$url"."$i"."$urlend"."</a><br>");
    
    echo "<a href="."$url"."$i"."$urlend".'">'."$url"."$i"."$urlend"."</a>";
    echo "<br>";
    }
    
    fclose($f);
    ?>
     
    Kosiak нравится это.
  3. Kosiak

    Kosiak

    Регистр.:
    12 сен 2006
    Сообщения:
    613
    Симпатии:
    73
    Спасибо! Это первая часть задачи, а вторую и третью также реализовать (скриптом) можно?

    Я просто думал, что, возможно, есть какой-то програмный инструмент (десктопный), который сможет решить задачу. По крайней мере пункты 2-3 решаются в построителях сайтмапов. А вот по раздельности не знаю даже как...

    Добавлено через 14 минут

    Где-то засада. ссылка генерируется как:
    http://mysite.ru/index.php?showtopic=1%22 хотя анкор у неё нормальный. Откуда-то в ссылке этот символ %22 показывается...

    Добавлено через 21 минуту
    Ага нашёл. будет так:
    Код:
    <?
    $url="mysite.ru/index.php?showtopic=";
    $urlend="";
    $count = 3280;
    $file = "linkz.html";
    $f =fopen($file, "a+");
    
    
    for ($i = 1; $i <= $count; $i++) 
    {
    fputs($f,"<a href="."$url"."$i"."$urlend".'">'."$url"."$i"."$urlend"."</a><br>");
    
    echo "<a href="."$url"."$i"."$urlend".'>'."$url"."$i"."$urlend"."</a>";
    echo "<br>";
    }
    
    fclose($f);
    ?>
     
  4. Compressor

    Compressor

    Регистр.:
    31 янв 2009
    Сообщения:
    314
    Симпатии:
    200
    HTML:
    <?
    $url="mysite.ru/index.php?showtopic="; // начало урл
    $urlend=""; //конец урл
    
    $countfrom = 1; // со скольки считать
    $countto = 3280; // до скольки считать
    $rezak = 150; // по сколько резать
    $filename = "linkz"; // имя файла
    $fileex = ".html"; // формат файла
    
    $d = 1;
    for ($i = $countfrom; $i <= $countto; $i++) 
    {
    
    $file = "$filename".$d."$fileex";
    
    $z=$i-$countfrom;
    
    	if($z % $rezak == 0 && $z > 0)
    	{
    	$d++;
    	echo "<h1>Новая страница</h1>";
    	}
    
    $f =fopen($file, "a+");
    
    
    fputs($f,"<a href="."$url"."$i"."$urlend".'">'."$url"."$i"."$urlend"."</a><br>");
    
    echo "<a href="."$url"."$i"."$urlend".'">'."$url"."$i"."$urlend"."</a>";
    echo "<br>";
    }
    
    fclose($f);
    ?>
    + резак на страницы...

    Для пинга знаний не хватает =)
     
  5. krobol

    krobol

    Регистр.:
    6 июн 2008
    Сообщения:
    455
    Симпатии:
    126
    самое простое решение 1-й задачи:

    в MS Excel в столбец А вставляем -
    mysite.ru/index.php?showtopic=
    mysite.ru/index.php?showtopic=
    mysite.ru/index.php?showtopic=

    в столбец B -
    1
    2
    3

    в столбец С функцию -
    =СЦЕПИТЬ(A1;B1)
    =СЦЕПИТЬ(A2;B2)
    =СЦЕПИТЬ(A3;B3)

    затем всё выделяем и тянем за правый нижний уголок до нужного количества (3280). Excel делает автоинкримент.

    В результате в 3-ем столбце (С) получаем необходимые ссылки.

    смотри пример - Посмотреть вложение example.zip
     
  6. Kosiak

    Kosiak

    Регистр.:
    12 сен 2006
    Сообщения:
    613
    Симпатии:
    73
    Есть идея натравить на получившийся списочек какой-нибудь "пингатор", который составит свой список страниц, которые отдают код 200. А уже потом этот списочек порезать :)
    Кто-нибудь может подсказать такой "пингатор"?

    Добавлено через 36 минут
    Обломался. Сайт не отдаёт 404, он отдаёт свою страницу с ошибкой (а код 200 оставляет)
     
  7. krobol

    krobol

    Регистр.:
    6 июн 2008
    Сообщения:
    455
    Симпатии:
    126
    посмотри этот код. Только его нужно исправить под твои нужды: успешные страницы записывать в файл по 150 шт. Т.е. нужно слепить этот код и предыдущий.

    PHP:
    <?php  
        $site 
    "mysite.ru";  
        
    $con file("dist.txt"); ### файл со страницами (напр. /index.php?showtopic=1)
          
        
    $x 0;  
        for(
    $i 0$i count($con); $i++)  
                  
        {  
            
    $fp fsockopen($site80$errno$errstr30);  
          
            if(!
    $fp)  
            {  
                echo 
    "$errstr ($errno)<br />\n";  

            }  else {  
                  
                
    $page trim($con[$i]);  
                
    $out "GET ".$page." HTTP/1.1\r\n";  
                
    $out .= "Host: $site\r\n";  
                
    $out .= "Connection: close\r\n\r\n";  
                  
                
    fwrite($fp$out);  

                
    $data fgets($fp128);  
                  
                if(
    substr_count($data"Not Found") == 0)  
                {  
                    echo (
    $site.$dir." >>>Success!"."<br>");
                    
    $x++;  
                }  
                if((
    $i == count($con)-1) && ($x == 0))  
                {  
                    echo (
    "No page found!");  
                }  
                }  
                  
        }  
            
    fclose($fp);  
    ?>
     
  8. Kosiak

    Kosiak

    Регистр.:
    12 сен 2006
    Сообщения:
    613
    Симпатии:
    73
    Спасибо, но как я писал выше мне это не поможет. Мне можно только вылавливать неработающие ссылки по заголовку страницы, а не по коду ошибки. Например заголовок "Сообщение форума" говорит скорее всего об ошибке.
     
  9. Kosiak

    Kosiak

    Регистр.:
    12 сен 2006
    Сообщения:
    613
    Симпатии:
    73
    Compressor, а как в твой последний скрипт добавить код, чтобы содержание страниц было с соответствующими заголовками и футером (ну чтобы добавить туда теги header, body, html), чтобы по стандарту было?
     
  10. krobol

    krobol

    Регистр.:
    6 июн 2008
    Сообщения:
    455
    Симпатии:
    126
    в этой проверке условия
    PHP:
    if(substr_count($data"Not Found") == 0)
    ищет вхождение строки "Not Found" в сорце полученной страницы $data

    Ты можешь вставить здесь любое другое условие, например:
    PHP:
    if(substr_count($data"Сообщение форума") == 0)
    если фраза "Сообщение форума" не будет найдена, то значит ошибки нет.





    Расскажи, для чего тебе такой скрипт?
     
Статус темы:
Закрыта.