1. Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2600+ и мы растем!
    Скрыть объявление

Помогите настроить парсинг данных с сайта http://megashara.com/

Тема в разделе "Техническая поддержка", создана пользователем yadzha, 20 июн 2013.

  1. yadzha

    yadzha A-Parser Pro License
    A-Parser Pro

    Регистрация:
    18 июн 2013
    Сообщения:
    68
    Симпатии:
    6
    Имеется сайт, допустим -http://megashara.com/
    Интерес представляют профиля пользователей. Профиля имеют такую структуру = http://megashara.com/member/7074819. Нужно пройтись по всем профилям, начиная от member/1 до member/700000 и спарсить все емайлы и имена пользователей. Записи сохранять в таком виде: name;email

    Подскажите пожалуйста, как правильно настроить парсер для этой задачи?
     
  2. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.337
    Симпатии:
    1.795
    Заходим в Тестовый парсинг - там будем настраивать новый пресет
    [​IMG]

    Выбираем парсер [​IMG] Net::HTTP - этот парсер просто парсит содерживое указанной страницы
    Далее добавляем опцию Parse custom result - с помощью этой опции мы можем используя регулярные выражения выделить со страницы нужную информацию
    Выбираем какой результат мы будем обрабатывать - {data} - содержимое скачанной страницы, указываем следующее регулярное выражение:
    Код:
    участнике <b>(.*?)<.*?Имя: <b>(.*?)<
    Указываем флаг s - поиск с учетом переноса строки. В нашем регулярном выражении 2 захватыющие группы - первую мы сохраняем в переменную name, вторую в mail
    Далее переопределяем формат результата: {name};{mail}\n
    В качестве запроса указываем адрес страницы профиля, на которой мы будем тестировать парсинг
    Запускаем тест - проверяем что в результат сохраняются необходимые нам данные(последняя строка в логе)

    После чего нажимаем иконку сохранить(справа вверху) и все настройки перенесутся в добавление задания(Add task)
    [​IMG]

    Из условий задачи нам надо перебрать пользователей от 1 до 700000 - указываем ссылку и макрос {num:1:700000}

    собственно и все :)
     
    yadzha нравится это.
  3. yadzha

    yadzha A-Parser Pro License
    A-Parser Pro

    Регистрация:
    18 июн 2013
    Сообщения:
    68
    Симпатии:
    6
    Разбор полетов породил несколько вопросов :)

    1. Можно обойтись без регулярок при определении границ парсинга? В ContentDownloader для юзабельно сделан этот нюанс. Или же без регулярок не обойтись и лучше потратить время на их изучение?

    2. Второй вопрос вытекает из первого, флаг ' s ' - это символ из регулярок или же это что-то из внутренней логики парсера? Что означают другие символы?

    3.
    Код:
    участнике <b>(.*?)<
    Эта регкулярка ищет, как я понимаю, любые символы, до первого символа?
    Код:
    <
    Если в качестве имени будет указан [email protected] - будет ли сохранен данный майл ?

    4. На мегашаре емайлы в профилях попадаются еще и в других полях, например:
    http://megashara.com/member/7195980 - тут емайл адрес прописан в поле Email: -
    Код:
    Email: <b><a href="mailto:syrotyuk020895%40mail.ru" target="_blank" rel="nofollow">[email protected]</a></b></div>
    http://megashara.com/member/7069431 - на этой страничке юзер оставил свое мыло в поле Откуда:
    http://megashara.com/member/787466 - а тут юзер перепутал поля и прописал свой емайл вместо адреса сайта - Сайт: http://[email protected]. Такое мыло тоже нужно спарсить и преобразовать в нормальный вид
    http://megashara.com/member/7134313 - в этом примере емайл записан в поле = Вконтакте: [email protected]
    http://megashara.com/member/6977724 - тут мыло записано вместо моего мира -
    Мой мир: [email protected]
    http://megashara.com/member/7173809 - на это страничке мыло вообще неприкаянное в самом низу профиля записано

    Собственно вопрос, имеет ли смысл прописывать каждое из возможных условий парсинга или же проще будет прописать одну регулярку, которая будет искать емайлы в любых произвольных местах странички?
     
  4. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.337
    Симпатии:
    1.795
    без регулярок не обойтись, всмысле кастомный парсинг в апарсере реализован только с их помощью, скоро будет еще xpath

    это флаг регулярок, подробнее тут http://a-parser.com/wiki/customresult/

    3. Да, на оба вопроса

    4. Проще последний вариант, т.е. собирать все емейлы по регулярке со страницы
     
  5. yadzha

    yadzha A-Parser Pro License
    A-Parser Pro

    Регистрация:
    18 июн 2013
    Сообщения:
    68
    Симпатии:
    6
    А можно пример регулярки, которая будет вытаскивай майл из любого блока со странички?

    И еще вопрос, запустил парсер на 1000 потоков для парсинга майлов с другого крупного сайта, посмотрел собранные результаты. Для сравнения запустил Content Downloader на 50 потоков, подождал подольше, пока тотже объем страничек спарсится. В результате, CD собрал в несколько раз больше данных. Я так понимаю, что это может быть связано с тем, что А-парсер перегружает сервер на 1000+ потоках и сервер выдает нам 403 или 500 ошибки? Для такого кол-ва потоков нужно прокси использовать, или тут единственный вариант - уменьшать потоки?
     
  6. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.337
    Симпатии:
    1.795
    Обычно нет необходимости выставлять столько потоков при парсинге какого либо сайта без прокси. 50 потоков апарсера будут в 5-100 раз быстрее любого парсера потипу Content Downloader, которые используют браузерные движки

    Примеры и обсуждение регулярок в этой теме http://a-parser.com/posts/1240/
     
  7. yadzha

    yadzha A-Parser Pro License
    A-Parser Pro

    Регистрация:
    18 июн 2013
    Сообщения:
    68
    Симпатии:
    6
    Такой еще вопрос возник. Настроил парсер, в первом parse result вытаскиваю никнейм, во втором - любой емайл на страничке. Запускаю в тестовом режиме, все парсит отлично. Добавляю парсер в очередь заданий, запускаю. В результате, ники не парсятся, только емайлы... Где тут баг?
    [​IMG]
     
  8. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.337
    Симпатии:
    1.795
    Я проверил - парсятся, возможно ты смотришь на несуществующих пользователей?
     

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