Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/88: Рейтинг темы: голосов - 88, средняя оценка - 4.93
3 / 3 / 0
Регистрация: 08.08.2014
Сообщений: 214

Авторизация на сайте, а затем парсинг, как сделать?

30.12.2014, 13:11. Показов 16932. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте

Столкнулся с такой проблемой, пишу парсер товаров с сайта, но цены на нем отображаются лишь только при авторизации на нем.

Как мне сначала авторизоваться, а потом уже начать парсить???
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.12.2014, 13:11
Ответы с готовыми решениями:

Авторизация на сайте, Java парсинг
Задача парсить один сайт(не с интернета, наш корпоративный, к сожалению к базе не имею доступа, поэтому придется парсить) В общем данные...

Авторизация на сайте через delphi 7 как?
Авторизация на сайте через delphi 7 как? Помогите, все перепробовал, и не выходит. Помогите пожалуйста, как его сделать нормально и что...

Авторизация на сайте и получение данных из личного кабинета на сайте
В общем, проштудировав три справочника за неделю и полазав в интернете, кроме как опухнувшего мозга ничего не получил.. В общем, есть...

9
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
30.12.2014, 13:23
Цитата Сообщение от zmanz Посмотреть сообщение
Как мне сначала авторизоваться
Посмотрите, куда идёт запрос при отправке формы входа. Затем с помощью CURL подделайте запрос. Сохранять и передавать cookie в CURL нужно, указав настройки CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR.
0
3 / 3 / 0
Регистрация: 08.08.2014
Сообщений: 214
30.12.2014, 13:53  [ТС]
lyod, А как посмотреть куда идет запрос при отправке формы данных? Я так понимаю мне нужно там авторизоваться и посмотреть куку?
Ну а что такое CURL буду сейчас читать ))
0
100 / 70 / 26
Регистрация: 19.12.2014
Сообщений: 332
30.12.2014, 14:57
Цитата Сообщение от zmanz Посмотреть сообщение
А как посмотреть куда идет запрос при отправке формы данных? Я так понимаю мне нужно там авторизоваться и посмотреть куку?
Ну а что такое CURL буду сейчас читать ))
Открой браузер хром. Открой страницу авторизации. Нажми F12. Перейди на вкладку "network". Поставь галочку "preserve log". Нажми кнопку "record network log". Введи логи и пароль. Нажми в браузере кнопку "войти". Потом останови запись лога. Найди post-пакет. Всё.

Теперь надо написать скрипт, который отправит на сервер точно такие же заголовки.
0
3 / 3 / 0
Регистрация: 08.08.2014
Сообщений: 214
02.01.2015, 20:37  [ТС]
Сделал все как Вы написали, post файлов там много, но я думаю что этот
Что именно нужно отсюда передавать в заголовок??? И можно ли как то передать без CURL потому как библиотеку подключать не очень хочется да и надо то мне один раз авторизоваться спарсить цены в файл и все.
Миниатюры
Авторизация на сайте, а затем парсинг, как сделать?  
0
3 / 3 / 0
Регистрация: 08.08.2014
Сообщений: 214
03.01.2015, 19:34  [ТС]
Вот нашел код, в него нужно подставить данные из моего скриншота чтобы он заработал, у меня не получается сделать, после отправки правильных заголовков с авторизацией, вот на этой странице должны отображаться цены http://republika-woman.ru/magazin/folder/platya. Помогите пожалуйста подставить так чтобы заработало.
PHP
1
2
3
4
5
6
7
8
9
$ch =  curl _init();
 curl _setopt($ch, CURLOPT_URL, 'http://republika-woman.ru/magazin/folder/platya');
 curl _setopt($ch, CURLOPT_HEADER, false);
 curl _setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl _setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
 curl _setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
 curl _setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
$data =  curl _exec($ch);
 curl _close($ch);
Добавлено через 19 часов 13 минут
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$url = 'http://republika-woman.ru/magazin/folder/platya';   // URL сайта на котором будем авторизоваться 
$urlTo = 'http://republika-woman.ru/user';   // URL на которой будем слать POST данные
$login = '******'; 
$pass = '******';
$post = 'mode=login&login='.$login.'&password='.$pass;
 
$ch = curl_init();                              // Инициализируем сеанс CURL
curl_setopt($ch, CURLOPT_URL, $url);            // Заходим на сайт
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Делаем так, чтобы страница не выдавалась сразу в поток, а можно было ее записать в переменную
$html = curl_exec($ch);                         // Имитируем заход на сайт
 
curl_setopt($ch, CURLOPT_URL, $urlTo);              // Устанавливаем адрес куда будем слать POST данные
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');  // Записываем cookies в файл, чтобы потом можно было их считать
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); // Теперь читаем cookies с файла
curl_setopt($ch, CURLOPT_POST, true);               // Говорим, что информация будет отправляться методом POST
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);        // Передаем POST данные
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);     // Иногда бывает, что после отправки данных происходит редирект heaer('Location:...'). 
curl_setopt($ch, CURLOPT_URL, $url);                                                        // Этот параметр говорит о то, чтобы мы следовали за ними, а не оставались на месте после отправки данных
 
$html = curl_exec($ch); // Записываем пришедшие данные в переменную    
curl_close($ch);        // Закрываем сеанс работы CURL
 
echo $html;             // И вуаля :) Выводим авторизованную страницу
Все получилось авторизоваться на сайте, авторизация находится в переменной $html.
Теперь у меня другая проблема. Есть массив с сылками для парсинга на этот сайт. При переходе по этим ссылкам, он берет контент, но контент этот опять без цен, т.е страница открываются всеравно без авторизации на сайте.
Как сделать так чтобы он открывал эти страницы уже с авторизацией?

PHP
1
2
3
4
5
$arrURL[] = "http://republika-woman.ru/magazin/product/3902400";
$arrURL[] = "http://republika-woman.ru/magazin/product/3902600";
$arrURL[] = "http://republika-woman.ru/magazin/product/3902800";
for($i=0; $i < $count; $i++) {
$contentItem = file_get_contents($arrURL[$i]);
1
100 / 70 / 26
Регистрация: 19.12.2014
Сообщений: 332
03.01.2015, 19:57
file_get_contents никак не связан с curl. Это новый сеанс. Второй запрос нужно делать опять таки через curl.
0
3 / 3 / 0
Регистрация: 08.08.2014
Сообщений: 214
03.01.2015, 20:06  [ТС]
Ну а как его сделать тогда, у меня парсинг проходит в несколько этапов, первый этап берет все ссылки с сайта и записывает их в файл, ссылок там много.

Второй этап открывает эти ссылки и вытаскивает из них данные. Как мне тогда привязку сделать в таком случае?
0
100 / 70 / 26
Регистрация: 19.12.2014
Сообщений: 332
04.01.2015, 14:33
Лучший ответ Сообщение было отмечено zmanz как решение

Решение

Ну авторизоваться-то при помощи curl получилось?
Тогда перед curl_close() надо написать:
PHP
1
2
3
4
for($i=0; $i < $count; $i++) {
  curl_setopt($ch, CURLOPT_URL,$arrURL[$i]);
  $contentItem =curl_exec($ch);
}
В $contentItem данные будут загружаться из той же сессии, что проводит авторизацию. Если при этом кукисы не потеряются, то это будет всё тот же авторизованный ранее пользователь.
1
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
04.01.2015, 15:29
Цитата Сообщение от zmanz Посмотреть сообщение
пишу парсер товаров с сайта
А разрешение владельца сайта на это есть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.01.2015, 15:29
Помогаю со студенческими работами здесь

Авторизация на сайте по средствам POST запроса. Как расшифровать gzip ответ?
Всем привет, кто может мне помочь или кто тоже столкнулся с похожей проблемой! Проще говоря решил я сделать программу, которая будет...

Авторизация в вк . парсинг куки
привет, состряпал код авторизации в вк, получаю ответ от сервера с заголовками кук, но не получается спаристь куку и выдать MsgBox = True...

Авторизация и парсинг PHP (CURL)
Доброе время суток форумчане, Столкнулся с нуждою спарсить контент контент из закрытой части сайта https://lk.cinemapark.ru/ мне...

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

Как сделать парсинг страницы
Имеется код: private void button1_Click(object sender, EventArgs e) { string urik =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru