PHP

Как спарсить страницы с помощью PHP (адрес страниц тот же, но содержимое разное в зависимости от введённого логина)?

Кратко суть:
Есть список номеров зачеток студентов, по которым осуществляется вход на сайт с их результатами учёбы. Эти результаты надо спарсить, объединить и предоставить в удобном виде, на одной странице.

Теперь всё по частям:
1. Есть список номеров зачёток для входа на сайт.
2. Есть страница, где осуществляется вход на сайт только по номеру зачётки (домен/sign_in/). Дальше страница с которой нам надо парсить данные (домен/archive/), доступна, естественно, только после входа, для каждого номера свои данные;
3. Парсим данные, объединяем, выводим на нашем сайте в удобном виде.

Теперь вопросы:
1. Как реализовать вход на сайт?
2. Как дальше "перейти" на страницу с данными?
3. И собственно, главный, как реализовать парсинг, какие инструменты/библиотеки использовать?

Всё с помощью php(!)

P. S. В этом деле я новичок, c PHP знаком поверхностно (можно сказать, что совсем не знаю). Главный вопрос - как сделать вход, и парсинг?
а как реализовать вход на сайт - да как обычно реализовывают - пишут на странице форму в атрибутах которой указывают обработчик (адрес и имя скрипта что будет анализировать предоставленные в форме данные), метод передачи данных в него. Также пишут сам скрипт обработчика который сверяет введённые данные с данными полученными из БД - совпали - вуаля, поднялась сессия, с айди пользователя. Вы прочитали для себя красивое слово "парсить", к сожалению так и не разобравшись зачем и в каких случаях используется парсер и что он из себя представляет. В вашем случае парсить ничего не надо, просто формируется красивый и чёткий запрос в БД, и залогинившемуся пользователю из БД отображается та информация что интересует.
Евгений Хорошилов
Евгений Хорошилов
6 654
Лучший ответ
Кайрат Салхинов Как раз таки я знаю что такое "парсить", вы мне тут расписали, как сделать форму входа, мне нужно немного другое. Чтобы скрипт на моём сайте выполнил вход на другом сайте и вытащил от туда данные.
Если нужно залогиниваться, придётся использовать curl
Парсить через preg_match()
ВП
Вася Писяев
97 837
"В этом деле я новичок, c PHP знаком поверхностно" - вы сами ответили на свой вопрос.

тут одна проблема - залогиниться на сайт, единого способа не существует, все зависит от сайта, поэтому с такой постановкой задачи вам тут не помогут.
Да и работы вообще довольно много, чтобы за вас все на шару написать. А сложности вы не видите потому что.... ну... вверху сами написали.
Майрамбек Жуманазаров если есть логин и пароль, то curl решает все проблемы
аутентификация и последующий парсинг через curl
1. Вход с помощью библиотеки Curl. Если сайт без https, то можно и file_get_contents, но это для новичка сложнее.
2. Парсинг полученного контента с помощью регулярных выражений
3. Полученный ассоциативный массив сохраняем в БД и начинаем использовать.
Сложности:
1. Разобраться с Curl (решаемо и полезно для новичка)
2. Написать регулярные выражения (сложно, но для новичка полезно, и если покажете данные, помогу составить)
3. просто, можно и без БД
Выводы:
Я - гений!
Все остальные - гонят.
Наш сайт: www.bibik.ru
Все!
Роман Серых
Роман Серых
4 226
Евгений Хорошилов Регулярка и нафиг тут не нужна. Здравый смысл подсказывает что номера зачёток повторяться не могут, потому и самое то их в качестве первичных ключей использовать.
Курл наиболее хорош когда надо сделать скрытую вылазку на другой ресурс, не более.
Тут же просто грамотная работа с данными в БД, и пох каким способом они туда занесены.
Гоните уважаемый тут только вы - при скуднейшем запасе собственных знаний оскорбляя других людей.
Евгений Хорошилов Просмотрел ваш ответ несколько раз - ничего гениального не нашёл, склоняюсь к тому что вы склонны принимать желаемое за действительное, таких в народе называют лаконично и коротко - самодур.
если на защиту плевать:
<?
session_start();
$pass=array("зачетка1","зачетка2", и т. д.);
if(isset($_POST[имяinput])){
for($i=0;$i<длинаpass;$i++){
if($pass[$i]==$_POST[имяinput]){
тут поставишь вывод информации о зачетке
exit();
}}
echo "неверный номер зачетки";
exit();
}
form method=POST action=""
//поле ввода на HTML
/form
Djemali Tapladze
Djemali Tapladze
3 515
Кайрат Салхинов Мне не это нужно. А надо чтобы скрипт на моём сайте выполнил вход на другом сайте и вытащил от туда данные.
Странно, человек заявляет, что парсинг это для него так, семечки: - "Как раз таки я знаю что такое "парсить"
А PHP - "c PHP знаком поверхностно (можно сказать, что совсем не знаю) "
Как такое может быть?
типа: - "Я знаю Теорему Ньютона — Лейбница, но не знаю таблицу умножения. "
Так что-ли?
Какой-то когнитивный диссонанс в высказываниях этого програМиста.
Кайрат Салхинов До этого писал на С++ парсинг для файлов. Но теперь надо реализовать это на PHP для веба, здесь я и новичок.
Для поставленной задачи есть как простые (демонстративные), так и полноценные решения. Если сразу нужно полноценное решение, отвечающее всем правилам, то копаем интернет, изучаем базы данных, работу с сессиями (и/или куки) и задаём здесь менее обширные вопросы.

Однако если интересует простое демонстративное решение (в проме с таким, разумеется, засмеют), то вот наиболее простое, что приходит на ум:
Рисуем для каждой зачётки отдельную страницу с названием, совпадающим с номером зачётки. Первой строкой делаем проверку:
if($_POST["password"]==='[пароль к данной зачётке] '){}
Внутри описываем содержимое страницы.

На странице авторизации создаём форму с двумя полями (номер зачётки и пароль) и делаем JS пре-процессинг, который в качестве страницы подставляет введённый номер зачётки и POST запросом отправляет на неё пароль.

Базовых знаний в PHP, HTML и JS тут более чем достаточно. Но выполнив такую задачу, можно спокойно продвигать свои знания дальше, и по ходу модифицировать страницу до более приемлемого вида.
В первую очередь я бы посоветовал БД (я начинал с MySQL - для новичка вполне неплохо). Для связки с PHP используем библиотеку mysqli (лучше - PDO, но сложновато для начала).
Кайрат Салхинов Вы мне расписали, как сделать форму входа, мне нужно немного другое. Чтобы скрипт на моём сайте выполнил вход на другом сайте и вытащил от туда данные.