ФорумПрограммированиеPHP для идиотов → Парс

Парс

  • felix90

    Сообщения: 191 Репутация: N Группа: Адекваты

    Spritz Авг. 15, 2010, 8:39 п.п.

    Бредовый конечно вопрос.. Но! Как может быть такое: с сайта пытаюсь парсить необходимую информацию - не получается, запихиваю полностью html код страницы, с которой пытаюсь парсить, в переменную и в регулярке меняю переменные так, чтобы теперь парс был с этой переменной, в которой лежит html код - всё работает отлично. То есть регулярка полностью рабочая (проверил на http://pyha.ru/fishki/regexp/), но вот сайт не могу парсить. Использую дудкурл. Какие могут быть причины этого?
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz Авг. 15, 2010, 8:43 п.п., спустя 4 минуты 25 секунд

    разная кодировка
  • felix90

    Сообщения: 191 Репутация: N Группа: Адекваты

    Spritz Авг. 15, 2010, 8:45 п.п., спустя 1 минуту 38 секунд


    разная кодировка

    Тоже так думал. На сайте CP1251, скрипт в UTF-8. Скрипт пересохранял в CP1251 - результатов нет. Кроме того, в регулярке нет знаков, чтобы была проблема с кодировкой (на мой взгляд).

    Регулярка:

    preg_match_all('%.*type=\"hidden\".*name=\"(.*)\".*value=\"(.*)\"\\s+>%', $data, $matches, PREG_SET_ORDER);
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz Авг. 15, 2010, 8:48 п.п., спустя 2 минуты 35 секунд

    felix90, дуд курл в utf возвращяет данные, модификатор u добавте
  • felix90

    Сообщения: 191 Репутация: N Группа: Адекваты

    Spritz Авг. 15, 2010, 8:57 п.п., спустя 9 минут 4 секунды


    felix90, дуд курл в utf возвращяет данные, модификатор u добавте

    Так?
    preg_match_all('%.*type=\"hidden\".*name=\"(.*)\".*value=\"(.*)\"\\s+>%u', $data, $matches, PREG_SET_ORDER);

    Если да, то увы, но всё равно не работает..
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Авг. 15, 2010, 9:08 п.п., спустя 10 минут 54 секунды

    .* сурово. "?" не забыл?
    Сапожник без сапог
  • andipas

    Сообщения: 170 Репутация: N Группа: Кто попало

    Spritz Авг. 15, 2010, 9:29 п.п., спустя 21 минуту 8 секунд

    Возможно контент там подгружается ajax-ом, посмотри firebug-ом или httpfox-ом
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Авг. 15, 2010, 11:35 п.п., спустя 2 часа 5 минут 50 секунд

    возможно вы смотрите контент через файрбаг, а он меняет аттрибуты местами, поэтому вам надо телнетом скачать страницу (или дампами через lynx/w3m) и ее парсить…. а возможно от сессии к сессии разный контент, в любом случае лучше сделать как я сказал
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • felix90

    Сообщения: 191 Репутация: N Группа: Адекваты

    Spritz Авг. 16, 2010, 10:34 д.п., спустя 10 часов 59 минут 11 секунд

    httpfox-ом

    Анализировал httpfox-ом, при загрузки страницы контент не подгружается из разных источников.
    поэтому вам надо телнетом скачать страницу

    Я бы скачал, да вот только при помощи телнета нельзя авторизироваться на сайте, а страница доступна именно авторизированным пользователям.
    .* сурово. "?" не забыл?

    Добавил ?, но результат тот же :(
    ЗЫ На http://pyha.ru/fishki/regexp/ знак вопроса был проигнорирован и регулярка выполнилась отлично.

    Быть может я дам данные для доступа к сайту и Вы мне скажите, где я ошибся?
  • andipas

    Сообщения: 170 Репутация: N Группа: Кто попало

    Spritz Авг. 16, 2010, 11:18 д.п., спустя 44 минуты 15 секунд

    страница доступна именно авторизированным пользователям.

    После авторизации, перед тем как парсить страницу сохрани контент в файл, возможно ты не авторизован.
  • felix90

    Сообщения: 191 Репутация: N Группа: Адекваты

    Spritz Авг. 16, 2010, 11:52 д.п., спустя 34 минуты 1 секунду


    страница доступна именно авторизированным пользователям.

    После авторизации, перед тем как парсить страницу сохрани контент в файл, возможно ты не авторизован.


    $data = $curl->init("http://domain.com/file.php?id=00000")->exec();

    echo $data;

    preg_match_all('%.*type=\"hidden\".*name=\"(.*)\".*value=\"(.*)\"\\s+>%u', $data, $matches, PREG_SET_ORDER);

    var_export($matches);

    Контент, который выводится с переменной $data полностью соответствует тому, что я вижу на сайте когда авторизирован.
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz Авг. 16, 2010, 12:03 п.п., спустя 10 минут 38 секунд

    felix90, в файрфоксе будучи авторизованным нажми правой кнопкой мыши и в меню выбери исходный код страницы (не исходый код выделенного фрагмента) и тогда ты получишь оригинальный код. Попробуй по нему спарсить в пыхарегэкспе
  • andipas

    Сообщения: 170 Репутация: N Группа: Кто попало

    Spritz Авг. 16, 2010, 12:26 п.п., спустя 23 минуты 8 секунд

    запихиваю полностью html код страницы, с которой пытаюсь парсить, в переменную и в регулярке меняю переменные так, чтобы теперь парс был с этой переменной, в которой лежит html код - всё работает отлично.


    Откуда ты берешь этот html код? Выходит этот html != тому что в $data при парсинге. Когда ты делаешь echo запускаешь и javascript в нем тоже. Сохрани $data в файл и сравни с тем html.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz Авг. 16, 2010, 12:53 п.п., спустя 27 минут 12 секунд

    SpartakuS, в лисе не оригинальный кода, проверено…
  • felix90

    Сообщения: 191 Репутация: N Группа: Адекваты

    Spritz Авг. 16, 2010, 1:09 п.п., спустя 16 минут 4 секунды

    Всем спасибо. Косяк был с моей стороны.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!