Парсер структурированных данных микроразметки SCHEMA.ORG на PHP
В продолжении темы парсинга, где я описывал как можно спарсить RSS ленту себе на сайт, хочу поделиться PHP скриптом для получения информации с одной страницы, посредствам JSON микроразметки структурированных данных SCHEMA.ORG.
Микроразметка - это разметка на странице сайта, которая служит для передачи поисковым роботам, таким как Яндекс и Google, структурированных данных.
Поисковые машины используют структурированные данные для того, чтобы более точнее анализировать контент на сайтах. Внизу приведен один пример кода структурированных данных в JSON-формате. Эти данные размещаются на страницах, где указывается название статьи, его автор, дата публикации и другая информация.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://khabar.kz/ru/news/v-mire/item/129290-v-yuzhnoj-koree-razrabotali-dron-taksi"
},
"url": "https://khabar.kz/ru/news/v-mire/item/129290-v-yuzhnoj-koree-razrabotali-dron-taksi",
"headline": "В Южной Корее разработали дрон-такси",
"image": [
"https://khabar.kz/media/k2/items/cache/7a8104c8fe010562b8ef2d041c7720fe_XL.webp",
"https://khabar.kz/media/k2/items/cache/7a8104c8fe010562b8ef2d041c7720fe_L.webp",
"https://khabar.kz/media/k2/items/cache/7a8104c8fe010562b8ef2d041c7720fe_M.webp",
"https://khabar.kz/media/k2/items/cache/7a8104c8fe010562b8ef2d041c7720fe_S.webp",
"https://khabar.kz/media/k2/items/cache/7a8104c8fe010562b8ef2d041c7720fe_XS.webp",
"https://khabar.kz/media/k2/items/cache/7a8104c8fe010562b8ef2d041c7720fe_Generic.webp"
],
"datePublished": "2020-11-11 15:59:01",
"dateModified": "2020-11-11 15:59:01",
"author": {
"@type": "Person",
"name": "Symbat",
"url": "https://khabar.kz/ru/show/itemlist/user/168-symbat"
},
"publisher": {
"@type": "Organization",
"name": "Агентство Хабар",
"url": "https://khabar.kz/",
"logo": {
"@type": "ImageObject",
"name": "Агентство Хабар",
"width": "",
"height": "",
"url": "https://khabar.kz/images/2020/february/logo.webp"
}
},
"articleSection": "https://khabar.kz/ru/news/v-mire",
"keywords": "корея группа, машины в корее цены, хорошо ли жить в южной корее, картинки такси,",
"description": "В небо над Сеулом впервые подняли воздушное такси. Таким образом, в Южной Корее начали формировать городское воздушное движение.",
"articleBody": "В небо над Сеулом впервые подняли воздушное такси. Таким образом, в Южной Корее начали формировать городское воздушное движение. Коронавирус внес дополнения даже в работу дронов. Беспилотник предупреждает посетителей сеульского парка об обязательном ношении масок. Летательные аппараты в Корее уже доставляют почту, а через несколько лет на таком дроне можно будет и вовсе долететь на работу. Владислав Цой, корреспондент: — На дрон это устройство мало похоже, скорее мини-вертолет. Казалось бы, тяжелое устройство, но корпус выполнен из пластика, поэтому весит всего 200 килограммов. Воздушное такси весом 650 кг, производства КНР протестировали сегодня. Пассажира на борт посадить не рискнули. Заменили его четырьмя мешками риса, по 20 кг каждый. Дрон работает на электродвигателе, поэтому он не такой шумный как вертолет. Дрон пролетел 1,8 км на 50-метровой высоте и благополучно приземлился в нужной точке. Правительство Кореи представило план по развитию городского воздушного транспорта летом этого года. Уже в 2025 году в Сеуле можно будет летать на такси на расстояние от 30 до 50 км, это позволит уменьшить пробки. Ли Ран, глава отдела министерства земли инфраструктуры и транспорта Южной Кореи: — Корейские компании также работают над разработкой дронов-такси. По моему мнению, наши беспилотники появятся в течение трех лет, максимум через пять. Главное, мы продемонстрировали, что дроны-такси и дроны-курьеры, которые появятся в будущем, могут безопасно летать в центре Сеула. Как сообщили в корейском правительстве, отечественные дроны-такси смогут развивать скорость до 300 км в час. 40-километровое расстояние из аэропорта в городе Инчон до Сеула беспилотник преодолеет за 15 минут. Стоить такая поездка будет около 100 долларов. Но, когда рынок городского воздушного транспорта увеличится, проезд подешевеет. Авторы: Владислав Цой, Ольга Лян"
}
</script>
Для того чтобы проверить структурированные данные на странице, Google создал инструмент, который позволяет проверить микрорзаметку на ее наличие и наличие ошибок в ней. Инструмент называется Проверка структурированных данных.
Теперь после того, как мы поняли что из себя представляет микроразметка, ниже предоставляю PHP код (скрипт) с моими комментариями.
Пользуйтесь и радуйтесь!
<?php
$c = file_get_contents("https://khabar.kz/ru/news/v-mire/item/129290-v-yuzhnoj-koree-razrabotali-dron-taksi"); // ссылка на материал
// получить данные JSON
$d = new DomDocument();
@$d->loadHTML($c);
// проанализировать HTML, чтобы получить только "ld + json"
$xp = new domxpath($d);
$jsonScripts = $xp->query( '//script[@type="application/ld+json"]' );
$json = trim( $jsonScripts->item(0)->nodeValue ); // получить только первый скрипт (в любом случае он должен быть уникальным)
// декодировать строку JSON, которую мы находим, в ассоциативный массив
$data = json_decode( $json, true );
// теперь вы можете использовать этот массив для запроса нужных данных
$headline = $data['headline']; // заголовок
echo "<h2>$headline</h2>" ;
$image = $data['image']['0']; // изображение
echo "<img src='$image'>" ;
$articleBody = $data['articleBody']; // текст материала
echo "<p>$articleBody</p>" ;
$keywords = $data['keywords']; // ключевые слова материала
echo "<p>Теги: $keywords</p>" ;
$author = $data['author']['name']; // автор
echo "<p>Автор: $author</p>" ;
$datePublished = $data['datePublished']; // дата и время создания материала
echo '<span>'. date("d.m.Y H:i", strtotime($datePublished)) .'</span>' ;
$url = $data['url']; // ссылка на оригинальный текст
echo "<p><a href='$url' title='$headline' target='_blank'>Читать на сайте источника</a></p>" ;
?>
Если Вам нужно спарсить данные из RSS ленты читайте тут.
Оставить комментарий