Задать вопрос

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

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

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

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

Структуры страницы, думаю описывать глупо, лучше, если Вы посмотрите всё сами.
Страница входа - goo.gl/2RFrN9
Страница с данными - goo.gl/jTQzhd (доступна после входа)
Номер - 13048050

P. S. В этом деле я новичок, c PHP знаком поверхностно (можно сказать, что совсем не знаю). Главный вопрос - как сделать вход, и парсинг?
  • Вопрос задан
  • 1479 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 2
Stalker_RED
@Stalker_RED
Авторизоваться можно через curl, например.
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, "a=4&b=7");

А парсить при помощи Zend\Dom. Его можно как отдельный модуль взять, там всего три файлика.
$doc = new Zend\Dom\Query($html, 'utf-8');
        $links = $doc->execute('ul.menu a');
        foreach ($links as $link) {
            $url = $link->getAttribute('href');
        ...
Ответ написан
denisandroid
@denisandroid
BASH ,PHP , MYSQL, C++, JAVA . (PHP, JAVA,MYSQL)
Ого, во вы умеете описывать вопросы:)
Вот не хитрая функция

function result_site($domain){
//Создаем курл
$curl = curl_init();
//если надо то оставляем, время через которое соединение будет сброшено если ответ не пришел (1 тоесть 1 секунда!)
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 1);
//
//Ссылка
curl_setopt($curl,CURLOPT_URL, $domain);
//Мы желаем получить ответ
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//Мини бонус, отправка post запроса, не нужен, стираем
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, "type=statistic");
//
//получаем ответ
$response = curl_exec($curl);
//Закрываем курл(
curl_close($curl);
//

return $response;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
muhammad_97
@muhammad_97
PHP-разработчик
Парсить можно через это: https://github.com/imangazaliev/didom, проще и быстрее
Ответ написан
Комментировать
1. Авторизовать и сохранить куки.
2. file_get_contents(''); или curl вывести и вырезать то что надо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы