Форум → Программирование → PHP для идиотов → Парс
Парс
-
Бредовый конечно вопрос.. Но! Как может быть такое: с сайта пытаюсь парсить необходимую информацию - не получается, запихиваю полностью html код страницы, с которой пытаюсь парсить, в переменную и в регулярке меняю переменные так, чтобы теперь парс был с этой переменной, в которой лежит html код - всё работает отлично. То есть регулярка полностью рабочая (проверил на http://pyha.ru/fishki/regexp/), но вот сайт не могу парсить. Использую дудкурл. Какие могут быть причины этого?
-
-
Авг. 15, 2010, 8:45 п.п., спустя 1 минуту 38 секунд
разная кодировка
Тоже так думал. На сайте CP1251, скрипт в UTF-8. Скрипт пересохранял в CP1251 - результатов нет. Кроме того, в регулярке нет знаков, чтобы была проблема с кодировкой (на мой взгляд).
Регулярка:preg_match_all('%.*type=\"hidden\".*name=\"(.*)\".*value=\"(.*)\"\\s+>%', $data, $matches, PREG_SET_ORDER);
-
Авг. 15, 2010, 8:48 п.п., спустя 2 минуты 35 секунд
felix90, дуд курл в utf возвращяет данные, модификатор u добавте -
Авг. 15, 2010, 8:57 п.п., спустя 9 минут 4 секунды
felix90, дуд курл в utf возвращяет данные, модификатор u добавте
Так?preg_match_all('%.*type=\"hidden\".*name=\"(.*)\".*value=\"(.*)\"\\s+>%u', $data, $matches, PREG_SET_ORDER);
Если да, то увы, но всё равно не работает.. -
-
Авг. 15, 2010, 9:29 п.п., спустя 21 минуту 8 секунд
Возможно контент там подгружается ajax-ом, посмотри firebug-ом или httpfox-ом -
Авг. 15, 2010, 11:35 п.п., спустя 2 часа 5 минут 50 секунд
возможно вы смотрите контент через файрбаг, а он меняет аттрибуты местами, поэтому вам надо телнетом скачать страницу (или дампами через lynx/w3m) и ее парсить…. а возможно от сессии к сессии разный контент, в любом случае лучше сделать как я сказалhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
Авг. 16, 2010, 10:34 д.п., спустя 10 часов 59 минут 11 секунд
httpfox-ом
Анализировал httpfox-ом, при загрузки страницы контент не подгружается из разных источников.поэтому вам надо телнетом скачать страницу
Я бы скачал, да вот только при помощи телнета нельзя авторизироваться на сайте, а страница доступна именно авторизированным пользователям..* сурово. "?" не забыл?
Добавил ?, но результат тот же :(
ЗЫ На http://pyha.ru/fishki/regexp/ знак вопроса был проигнорирован и регулярка выполнилась отлично.
Быть может я дам данные для доступа к сайту и Вы мне скажите, где я ошибся? -
Авг. 16, 2010, 11:18 д.п., спустя 44 минуты 15 секунд
страница доступна именно авторизированным пользователям.
После авторизации, перед тем как парсить страницу сохрани контент в файл, возможно ты не авторизован. -
Авг. 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 полностью соответствует тому, что я вижу на сайте когда авторизирован. -
Авг. 16, 2010, 12:03 п.п., спустя 10 минут 38 секунд
felix90, в файрфоксе будучи авторизованным нажми правой кнопкой мыши и в меню выбери исходный код страницы (не исходый код выделенного фрагмента) и тогда ты получишь оригинальный код. Попробуй по нему спарсить в пыхарегэкспе -
Авг. 16, 2010, 12:26 п.п., спустя 23 минуты 8 секунд
запихиваю полностью html код страницы, с которой пытаюсь парсить, в переменную и в регулярке меняю переменные так, чтобы теперь парс был с этой переменной, в которой лежит html код - всё работает отлично.
Откуда ты берешь этот html код? Выходит этот html != тому что в $data при парсинге. Когда ты делаешь echo запускаешь и javascript в нем тоже. Сохрани $data в файл и сравни с тем html. -
Авг. 16, 2010, 12:53 п.п., спустя 27 минут 12 секунд
SpartakuS, в лисе не оригинальный кода, проверено… -
Пожалуйста, авторизуйтесь, чтобы написать комментарий!