Парсер тайтлов на PHP

Тема в разделе "Софт / Скрипты", создана пользователем Rush, 17.12.15.

  1. Rush

    Rush Новичок

    Сообщения:
    39
    Симпатии:
    23
    Баллы:
    8
    Решил поделиться своим парсером тайтлов по списку урлов :)
    Использование предельно простое - в папку со скриптом кладете title_urls.txt со списком адресов (построчно), результат сохраняется в файл result.txt
    Парсер довольно шустрый, по умолчанию, если количество ссылок более десяти, парсит в 10 потоков.
     

    Вложения:

    kolesikd, strannik-ps, Bernardito и 12 другим нравится это.
  2. cafen

    cafen Новичок

    Сообщения:
    12
    Симпатии:
    4
    Баллы:
    8
    Спасибо попробую запустить. Сейчас как раз ищу решение по парсингу title
     
  3. prank

    prank Новичок

    Сообщения:
    1
    Симпатии:
    1
    Баллы:
    3
    5 за старание, 3 за исполнение.
    Скажу одно, потоки надо подгружать по мере их освобождения.
    Накидаю примерный алгоритм.
    PHP:
    $сколько_надо_потоков 10;
    // К примеру имеем массив ссылок
    $all_urles = array(..............);
    $running 0;
    do {
        while(
    $running $сколько_надо_потоков)){
            
    //создаём необходимое колличество потоков
            
    $url array_shift($all_urles);
            
    $running++;
            ......
        }
        
    curl_multi_exec($mh$running);
        
    // Ниже строчка может быть по разному
        
    while($res curl_multi_info_read($mh) and is_array($res)){
            
    $res curl_multi_getcontent($res["handle"]);
            
    // делаем что надо
            
    ...........
            
    curl_multi_remove_handle($mh$res["handle"]);
            
    curl_close($res["handle"]);
        }
        if(!
    $all_urles and $running == 0) break;
    } while(
    true);
    curl_multi_close($mh);
    Как то вот так)) + комбинируем в зависимости от задачи))
    Таким образом имеем 10 потоков, но не ждём пока они все освободятся, а имеем постоянно работающие 10 потоков, только один отработал, создался другой.<br>
    А у вас пока все не отработают, новые не создадутся.
    В общем пнул в нужную сторону)) Если погуглите, может и найдёте 1-2 примера на весь интернет)))
    Тут главное логику понять)) Дальше просто)) Удачи в освоении.
     
    AZANIR нравится это.
  4. cafen

    cafen Новичок

    Сообщения:
    12
    Симпатии:
    4
    Баллы:
    8
    Скрипт работает запускал под денвером, надо поставить PHP 5: дополнительные модули и включить curl в php.ini. Также переводы строк только нужны линуксовые выставлять в списке линков title_urls.txt это можно через notepad++ делать. Еще бы прикрутить фронт енд, какой нибудь было бы хорошо.

    Для парсинга тайтлов, с одного сайта можно использовать netpeak spider - собирает линки и парсит, делает экспорт в ексель и готовые тайтлы, кейворды, дескрипшины на выходе.
     
  5. Mary Huana

    Mary Huana Участник

    Сообщения:
    80
    Симпатии:
    59
    Баллы:
    25
    зачем накидывать то, что уже давно накидали https://github.com/chuyskywalker/rolling-curl
     
  6. simbioz

    simbioz Новичок

    Сообщения:
    56
    Симпатии:
    18
    Баллы:
    13
    Протестировал скрипт на 100 ссылках. Первые 99 результатов "Bad Request 400". Для последней ссылки всё ОК. Думал, что проблема с линками. Добавил ещё 100 ссылок. Результат такой же - корректно парсится только последняя ссылка.
     
  7. marat1975

    marat1975 Активный участник

    Сообщения:
    375
    Симпатии:
    143
    Баллы:
    71
    Какой смысл изобретать велосипед?
    Уже был упомянут бесплатный и рабочий софт _netpeak.ua/software/netpeak-spider/
    Скачал, попробовал - все работает, в exel выгружает.
    Десктопная версия без танцев.
     
  8. cafen

    cafen Новичок

    Сообщения:
    12
    Симпатии:
    4
    Баллы:
    8
    Что бы такого не случалось, на как я уже ранее говорил, нужно переводы строк линуксовые выставлять в списке линков title_urls.txt это можно через notepad++ делать Меню - Правка - Формат конца строк - Преобразовать в Unix формат(LF)
     
    simbioz нравится это.
  9. simbioz

    simbioz Новичок

    Сообщения:
    56
    Симпатии:
    18
    Баллы:
    13
    Благодарю. А в связи с чем это связанно? Запускаю же из под винды.
     
  10. Mary Huana

    Mary Huana Участник

    Сообщения:
    80
    Симпатии:
    59
    Баллы:
    25
    после
    foreach($url_array as $url) {

    добавляем
    $url = trim($url);

    и notepad можно не беспокоить )))

    это связано с тем что при переборе массива в конце урла перенос строки \n
     
    Последнее редактирование: 31.03.16
    simbioz нравится это.
  11. simbioz

    simbioz Новичок

    Сообщения:
    56
    Симпатии:
    18
    Баллы:
    13
    Спасибо. Сегодня как раз столкнулся со смежной проблемой. Есть список кеев, которые спаршены с помощью Content Downloader. В списке кеев есть пустые строки, если я их удаляю через notepad++ то кеи склеиваются и добавляется перенос строки как на скриншоте
    [​IMG]
    Не подскажешь, как от этого избавиться?
     
  12. Mary Huana

    Mary Huana Участник

    Сообщения:
    80
    Симпатии:
    59
    Баллы:
    25
    заюзаете регулярки, примерно так

    поле найти: ^$\n
    поле заменить: пустое

    так вы удалите все пустые строки (если я правильно понял)
    ну плюс судя по скрину у вас проблемы с кодировками
     
  13. simbioz

    simbioz Новичок

    Сообщения:
    56
    Симпатии:
    18
    Баллы:
    13
    Данный способ не помог. Навряд-ли дело в кодировке, т.к. проблема возникает только при превышении определённого кол-ва строк. Ниже я прикрепил исходник с ключами. Для воспроизведения ошибки нужно открыть файл в notepad++ и зайти в правка/операции со строками/Удалить пустые строки. В результате мы получим то, что я показывал на скрине.
     

    Вложения:

    • bag keys.txt
      Размер файла:
      693,3 КБ
      Просмотров:
      6
  14. Mary Huana

    Mary Huana Участник

    Сообщения:
    80
    Симпатии:
    59
    Баллы:
    25
    способ 100%

    у меня нет notepad'а к сожалению

    100% в ней где-то должна быть вкладка в меню "кодировки", ну и что-то типа преобразовать в UTF-8, перед чисткой
     
  15. simbioz

    simbioz Новичок

    Сообщения:
    56
    Симпатии:
    18
    Баллы:
    13
    Так и делал. Файл ключей сперва конвертировал в UTF-8, потом удалял пустые строки.
     
  16. Mary Huana

    Mary Huana Участник

    Сообщения:
    80
    Симпатии:
    59
    Баллы:
    25
    ну тогда не знаю как вам помочь, юзаете регулярки и все будет ок, тем более если занимаетесь этим плотно а не раз в год

    RegexBuddy в помощь
     

    Вложения:

    • bag keys-2.txt
      Размер файла:
      657,4 КБ
      Просмотров:
      4
    simbioz нравится это.
  17. simbioz

    simbioz Новичок

    Сообщения:
    56
    Симпатии:
    18
    Баллы:
    13
    Спасибо. А не подскажите, что у меня не так в настройках? Регулярку указал, текст добавил, сохраняю - ничего не изменилось.
    [​IMG]
     
  18. HelgerLEE

    HelgerLEE Активный участник

    Сообщения:
    240
    Симпатии:
    171
    Баллы:
    57
    Странный файл. Сунул его в Пингвин и удалил дубли.
    Получилось. А NPP - не пашет.
     

    Вложения:

  19. Mary Huana

    Mary Huana Участник

    Сообщения:
    80
    Симпатии:
    59
    Баллы:
    25
    https://yadi.sk/i/Is-WUYjQqdutn

    вот еще софтинка для работы с ключами KeyWordKeeper
     

Поделиться этой страницей