За последние 24 часа нас посетили 18172 программиста и 1590 роботов. Сейчас ищут 1190 программистов ...

подобие грабера)

Тема в разделе "PHP для новичков", создана пользователем smidl, 17 дек 2007.

  1. smidl

    smidl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    84
    Симпатии:
    0
    доброго времени суток!). Появилась необходимость в скрипте грабере. Тоисть он идет по определенной ссылку( у меня ето про-файл пользователя на форуме), выдирает оттуда только номер его icq и выводит его. Но, в чем загвоздка, мне нужно взать аськи например у 100 пользователей и записать их в один файл, как ето осуществить?

    Я вот ту пробывал, но ето оно только одну асю выводит
    PHP:
    1.  
    2. <?php
    3.         $t_file="t.txt";
    4.         $name="http://forum.searchengines.ru/member.php?u=44160";
    5.                
    6.         copy ($name,$t_file);
    7.         $t=fopen($t_file,'r');
    8.         $temp=fread($t,filesize($t_file));
    9.         fclose( $t);
    10.        
    11.         $begin=strpos($temp,'icq')+276;
    12.         $end=9;
    13.         $res=trim(substr($temp,$begin,$end));
    14.         echo $res;
    15. ?>
    16.  
    Заранее благодорю.
    З.Ы. я понимаю что нужно делатьв все через цикл, но вот как узнать указал ли юзер асю, и как коректно вывести более 1 аськи незнаю...заранее спасибо.
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    разберешься сам?
    =)

    PHP:
    1. <?php
    2.  
    3. // 2007 (c) 440hz
    4.  
    5. // получить номер ICQ из контента страницы
    6.  
    7. function GetICQ($id) {
    8.  
    9.     $url = 'http://forum.searchengines.ru/member.php?u='.$id;
    10.     $html = file_get_contents($url);
    11.  
    12.     if($html === false) {
    13.         print("Не могу получить страницу [{$url}]");
    14.         exit();
    15.     }
    16.  
    17.     $icq = 0;
    18.     $pat = '/return false;">([0-9]+)<\/a><\/td>/';
    19.  
    20.     if(preg_match_all($pat,$html,$match)) {
    21.         $icq = (int) $match[1][0];
    22.     }
    23.  
    24.     return $icq;
    25.  
    26. }
    27.  
    28. // перебираем нужный диапазон ID юзеров.
    29. for($id=44195; $id <= 44215; $id++) {
    30.  
    31.     // получаем ICQ
    32.     $icq = GetICQ($id);
    33.  
    34.     if($icq)
    35.         print("\n[$id] [$icq]");
    36.     else
    37.         print("\n[$id] no icq");
    38. }
    39.  
    40. print("\n");
    41.  
    42. ?>
    Код (Text):
    1.  
    2. hosting(440hz):~/tmp$>php icq.php
    3.  
    4. [44195] no icq
    5. [44196] no icq
    6. [44197] no icq
    7. [44198] no icq
    8. [44199] [349852372]
    9. [44200] no icq
    10. [44201] no icq
    11. [44202] no icq
    12. [44203] no icq
    13. [44204] no icq
    14. [44205] no icq
    15. [44206] no icq
    16. [44207] no icq
    17. [44208] no icq
    18. [44209] [1390369]
    19. [44210] [315742]
    20. [44211] no icq
    21. [44212] no icq
    22. [44213] no icq
    23. [44214] no icq
    24. [44215] [284115985]
     
  3. smidl

    smidl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    84
    Симпатии:
    0
    спс, но если не сложно хоть минимально прокоментить, буду очень признателеН!

    З.Ы. Главное что копирайты поставил, обещаю что не сотру)
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    не. так прикольнее. хоть будешь знать чья ася...

    PHP:
    1. <?php
    2.  
    3. // 2007 (c) 440hz
    4.  
    5. // получить номер ICQ из контента страницы
    6.  
    7. function GetInfo($id) {
    8.  
    9.     $url = 'http://forum.searchengines.ru/member.php?u='.$id;
    10.     $html = file_get_contents($url);
    11.  
    12.     if($html === false) {
    13.         print("Не могу получить страницу [{$url}]");
    14.         exit();
    15.     }
    16.  
    17.     $nouser = 'Пользователь не указано или не существует';
    18.     if(strstr($html,$nouser)) return false;
    19.  
    20.     $icq = 0;
    21.     $pat = '/return false;">([0-9]+)<\/a><\/td>/';
    22.  
    23.     if(preg_match_all($pat,$html,$match)) {
    24.         $icq = (int) $match[1][0];
    25.     }
    26.  
    27.     $name = '';
    28.     $pat2 = '/<td class="tcat">Просмотр профиля<span class="normal">: (.*)<\/span><\/td>/S';
    29.  
    30.     if(preg_match_all($pat2,$html,$match)) {
    31.         $name = $match[1][0];
    32.     }
    33.  
    34.  
    35.     return array($name,$icq);
    36.  
    37. }
    38.  
    39. // перебираем нужный диапазон ID юзеров.
    40. for($id=44195; $id <= 44215; $id++) {
    41.  
    42.     // получаем ICQ
    43.     $info = GetInfo($id);
    44.     if($info === false) {
    45.         print("\n[$id] нет такого юзера");
    46.         continue;
    47.     }
    48.  
    49.     list($name,$icq) = $info;
    50.  
    51.     print("\n[$id] [$name] [$icq]");
    52. }
    53.  
    54. print("\n");
    55.  
    56. ?>
    Код (Text):
    1.  
    2. hosting(440hz):~/tmp$>php icq.php
    3. [44195] [s2s] [0]
    4. [44196] [frag123] [0]
    5. [44197] [Alexei42] [0]
    6. [44198] нет такого юзера
    7. [44199] [arkan] [349852372]
    8. [44200] нет такого юзера
    9. [44201] нет такого юзера
    10. [44202] [Citilink] [0]
    11. [44203] [mazzzer] [0]
    12. [44204] [Crash_18] [0]
    13. [44205] нет такого юзера
    14. [44206] нет такого юзера
    15. [44207] [mirumir] [0]
    16. [44208] [monte133] [0]
    17. [44209] [loure] [1390369]
    18. [44210] [Doyje] [315742]
    19. [44211] [RedNaxi] [0]
    20. [44212] [v0nziLka] [0]
    21. [44213] [Rusln] [0]
    22. [44214] [hardnoob] [0]
    23. [44215] [Управляющий] [284115985]
     
  5. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    а че тут коментить-то?
    и так 10 строк кода, блин...
     
  6. smidl

    smidl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    84
    Симпатии:
    0
    извини, просто я иногда даже не прочитав и не вникнув в код делаю вывод что я не понимаю, глупая привычка. Я уже понял что к чему, огромнейшее тебе спасибО!!!
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    бог простит, а мы тут контент воруем...
    =)
     
  8. smidl

    smidl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    84
    Симпатии:
    0
    Ну... Мы же не воруем). Энто всё часть изучения пхп, практическое занятие.
     
  9. Anonymous

    Anonymous Guest

    440Hz, забанил бы. За нарушение правил форума.