😎 » PHP - FAQ » PHP в прикладах » Парсинг сайтів на PHP
7 0  

Парсинг сайтів на PHP

Ну ось мій рівень PHP дозволив мені почати робити свій каталог сайтів - які будуть парситись і заганятись в БД автоматично.

1. Як витягнути весь HTML і очистити його від стилів та скриптів в змінну $cleanHtml?

//=(1)-- Отримуємо весь HTML код сторінки та його очистка---------------------------------
$url = 'https://k-p.net.ua';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$res = curl_exec($ch);
curl_close($ch);
// Видаляємо всі теги <script>
$cleanHtml = preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', '', $res);
// Видаляємо всі теги <style>
$cleanHtml = preg_replace('/<style\b[^>]*>(.*?)<\/style>/is', '', $cleanHtml);
// Видаляємо всі пусті строки
$cleanHtml = preg_replace('/^\h*\v+/m', '', $cleanHtml);
//------------------------------------

print_r($cleanHtml); 


2. Приклади отримання ДУМ елементів:

$dom = new DomDocument();
@ $dom->loadHTML($res);
 //Вибираємо ID DOMElement
$id_element = $dom->getElementById('content-tab2');
//Вибираємо елементи по імені
$elements = $dom->getElementsByTagName('div'); 

3. Отримуємо URl іконки сайту або фавікон:

//=(3)-- Отримуємо URl іконки сайту або фавікон ---------------------------------
// Знаходимо значення href з розмірами 32x32
preg_match('/<link\s+rel="icon"\s+type="image\/png"\s+sizes="32x32"\s+href="([^"]+)"/i', $res, $matches);
if (!empty($matches)) {
    $favicon = $matches[1];
} else {
    // Знаходимо значення href з розмірами 16x16
    preg_match('/<link\s+rel="icon"\s+type="image\/png"\s+sizes="16x16"\s+href="([^"]+)"/i', $res, $matches);

    if (!empty($matches)) {
        $favicon = $matches[1];
    } else {
        $favicon = 'favicon';
    }
}
// Виводимо отриманий значення favicon
//echo $favicon;
//=(4)-- /end -------------------------------------------------------------------

4. Як отримати заголовок та опис сайту і усі мета-теги:

// Отримуємо Title
$titleElement = $dom->getElementsByTagName('title')->item(0);
$title = $titleElement->textContent;
// Отримуємо мета-теги з сайту
$metaTags = get_meta_tags($url);
// Отримуємо Description
$description = isset($metaTags['description']) ? $metaTags['description'] : '';



Залишити свій коментар:

Досвід у веброзробці:

2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2009
2023