Tosterer
@Tosterer
Новичок

Как сохранить результат парсинга в MySQL.?

Добрый день. Получил тестовое задание на php-джуна:
По кнопке “Загрузить” парсить 5 последних статей с сайта https://habr.com и сохранять в
базу. После завершения парсинга отображать полученные статьи на страницах.
2. На этой же странице выводить список статей, полученных ранее. Отображать по 5 статей
на страницу. Добавить пагинатор для перехода по страницам.
3. Ссылка с названия статьи должна открывать в новой вкладке браузера статью на сайте
https://habr.com. Текст статей на странице отображать обрезанным до 200 символов.
Кнопка “Полный текст” должна отображать полное содержимое статьи в модальном окне
на весь экран. На модальном окне должен быть закрывающий его крестик.
4. Обновление списка статей после парсинга, листание страниц и показ полного содержимого
статьи должны происходить без перезагрузки страницы.

Решил воспользоваться библиотекой DiDom, т.к. опыта не имею все что на данный момент сообразил это вот:
require_once('vendor/autoload.php');
	
	use DiDom\Document;

	$document = new Document('https://habr.com/ru/all/', true); 
	$posts = $document->find('.post');
	$last5posts = array_slice($posts, 0, 5); 
	
	foreach($last5posts as $post) {
		echo $post->html(), "\n";
	}

Образно представляю что должно получиться, но как это реализовать не очень ясно. Хотя бы понять как результат парсинга в БД (MySQL) сохранить.
Прошу помочь новичку.
  • Вопрос задан
  • 2103 просмотра
Пригласить эксперта
Ответы на вопрос 4
@terka43
Если совсем просто, то html в текст и просто в бд сохраняй с PK ID, а потом ajax'ом по этому id выводи на страницу. Модальное тоже js, можно какой-нибудь jQuery, для той же простоты. Пагинация тоже js, легко гуглится, для красоты можешь какие-нибудь datatable использовать.
Что такое DiDom понятия не имею :)
Ответ написан
php666
@php666
PHP-макака
Я чуть не поперхнулся от такого задания...
Какой-то наркоман его придумал.
НЕ ХОДИ К НИМ РАБОТАТЬ, слышишь? Они - идиоты.
И задания у них крайне идиотские.

Образно представляю что должно получиться, но как это реализовать не очень ясно
Мне тоже. Идиотские задачи вообще очень тяжело поддаются анализу.
Ответ написан
ematveev
@ematveev
PHP разработчик / руководитель / писатель
в БД создай таблицу, где ключевое поле - ИД статьи, второе поле - название статьи, третье - текст статьи и т.д.
затем из таблицы легко выбирать будет инфу по 5 записей с LIMIT 5
Ответ написан
я бы порекомендовал использовать phpQuery для определения силекторов, а для записи в базу данных ORM RedBeanPHP. а если хотите готовый то можете посмотреть статью тут https://obninsksite.ru/blog/php-scripts/parser-na-...
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы