| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Подмена кукисов парсера |
| Автор: BuShaRt 15.7.2007, 15:25 |
| У меня есть парсер HTML страничек, он работает через функцию file(), просто грабя контент со странички, но возникла проблема вот с этим с одним сайто (http://baltma.ru/). На нем есть переход на разные языки, причем, как я понял, переход осуществляеться через пометку в кукисах, при этом ссылка остаеться той же, что и для других языков... Проблема в том, что функция file() грабит только русскую версию. Реально ли сделать так, чтоб я мог автоматизировать парсер и на иноязычные версии? |
| Автор: Golda 15.7.2007, 15:44 |
| Самое простое, на мой взгляд - использовать CURL и там, для подхвата cookies настроить CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR |
| Автор: BuShaRt 15.7.2007, 17:21 | ||
кукисы выдрал из папочки, кинул в папку со скриптом, запустил
фиг- не работает И как занести данные в переменную, не выводя их на экран? |
| Автор: Golda 15.7.2007, 17:36 |
| CURLOPT_COOKIEFILE позволяет задать файл, из которого нужно брать куки для пересылки в request. Для принимаемых кук используют CURLOPT_COOKIEJAR. Нужно настроить их на один и тот же файл. Тогда тое куки, что придут в ответ на первый запрос, будут посланы при следующем запросе. Чтобы занести в переменную, нужно использовать CURLOPT_RETURNTRANSFER |
| Автор: BuShaRt 15.7.2007, 18:17 | ||
Вывод заблокировался, но кукисы не жует все равно, страница как была на русском так и остаеться...
|
| Автор: Golda 16.7.2007, 08:05 | ||
А... так там cookie меняются javascript'ом. Тогда сервер их не поставит. Все равно менять вручную придется. Тогда уж проще прямо cookie задавать опцией CURLOPT_COOKIE
Так должно работать. Меняйте значение lang в cookie и получайте страницу на каком хотите языке. Если возникнут проблемы, добавьте еще на всякий случай CURLOPT_USERAGENT (некоторые сайты проверяют наличие header User-Agent). Реже, но иногда требуется CURLOPT_REFERER и (на случай, разнообрвзных пересылок) можно включить CURLOPT_FOLLOWLOCATION |
| Автор: BuShaRt 16.7.2007, 08:20 |
| Golda, Огромное спасибо, вы меня очень выручели, я уж думал придеться все вручную перебивать |