Cara membina perangkak web masa nyata dengan Elasticsearch dan PHP

王林
Lepaskan: 2023-07-07 12:50:02
asal
1517 orang telah melayarinya

Cara membina perangkak web masa nyata menggunakan Elasticsearch dan PHP

Pengenalan:
Perangkak web ialah program automatik yang mengumpul maklumat daripada Internet dan mengatur serta menganalisisnya. Elasticsearch ialah enjin carian sumber terbuka yang menyediakan keupayaan carian dan analisis masa nyata yang pantas. PHP ialah bahasa skrip sebelah pelayan yang popular. Menggabungkan Elasticsearch dan PHP, kami boleh membina perangkak web masa nyata yang mengikis data daripada tapak web dan menyimpannya dalam Elasticsearch untuk carian dan analisis.

Langkah 1: Pasang dan konfigurasikan Elasticsearch
Pertama, kita perlu memasang dan mengkonfigurasi Elasticsearch pada pelayan. Anda boleh memuat turun versi yang sesuai untuk sistem pengendalian anda dari laman web rasmi Elasticsearch, dan memasang serta mengkonfigurasinya mengikut dokumentasi rasmi.

Langkah 2: Sediakan indeks Elasticsearch
Dalam Elasticsearch, data disimpan dalam indeks. Kita perlu menentukan struktur dan medan indeks. Berikut ialah contoh definisi indeks untuk menyimpan data yang kami kikis daripada tapak web:

PUT my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "content": {
        "type": "text"
      },
      "url": {
        "type": "keyword"
      }
    }
  }
}
Salin selepas log masuk

Di sini kami mentakrifkan indeks bernama "my_index" yang mengandungi "tajuk", "kandungan" dan "url" Tiga medan. Medan "tajuk" dan "kandungan" adalah daripada jenis "teks", dan medan "url" adalah jenis "kata kunci". Anda boleh menentukan lebih banyak medan mengikut keperluan anda.

Langkah 3: Tulis kod perangkak PHP
Seterusnya, kami akan menggunakan PHP untuk menulis perangkak web mudah untuk merangkak data daripada tapak web yang ditentukan dan menyimpan data dalam Elasticsearch. Berikut ialah contoh kod:

<?php

// 定义需要抓取的目标网站URL
$targetUrl = "https://www.example.com";

// 创建一个Elasticsearch客户端实例
$esClient = new ElasticsearchClient();

// 从目标网站上获取HTML内容
$htmlContent = file_get_contents($targetUrl);

// 使用正则表达式提取标题和内容
preg_match('/<title>(.*?)</title>/', $htmlContent, $titleMatches);
preg_match('/<body>(.*?)</body>/', $htmlContent, $contentMatches);

// 抓取到的数据
$title = $titleMatches[1];
$content = strip_tags($contentMatches[1]); // 去除HTML标签

// 构建文档
$document = [
    'index' => 'my_index',
    'body' => [
        'title' => $title,
        'content' => $content,
        'url' => $targetUrl
    ]
];

// 将文档存储到Elasticsearch中
$esClient->index($document);

echo "数据已成功存储到Elasticsearch中!";

?>
Salin selepas log masuk

Dalam kod ini, kami mula-mula menentukan sasaran URL tapak web untuk dirangkak. Kemudian, contoh klien Elasticsearch telah dicipta untuk berinteraksi dengan Elasticsearch. Seterusnya, gunakan fungsi file_get_contents untuk mendapatkan kandungan HTML tapak web sasaran, dan kemudian gunakan ungkapan biasa untuk mengekstrak tajuk dan kandungan. Akhirnya, dokumen itu dibina dan disimpan dalam Elasticsearch. Operasi penyimpanan menggunakan fungsi indeks yang disediakan oleh Elasticsearch.

Langkah 4: Jalankan kod perangkak
Simpan kod di atas ke dalam fail PHP dan muat naik ke pelayan anda. Kemudian laksanakan fail dalam terminal atau baris arahan untuk mula menjalankan perangkak.

$ php crawler.php
Salin selepas log masuk

Perangkak akan merangkak data daripada tapak web yang ditentukan dan menyimpannya dalam Elasticsearch.

Kesimpulan:
Dengan menggabungkan Elasticsearch dan PHP, kami boleh membina perangkak web masa nyata yang ringkas tetapi berkuasa. Dengan keupayaan carian dan analisis Elasticsearch, kami boleh mencari dan menganalisis data yang dirangkak dengan mudah. Saya harap artikel ini membantu anda, pergi dan cuba membina perangkak web masa nyata anda sendiri!

Atas ialah kandungan terperinci Cara membina perangkak web masa nyata dengan Elasticsearch dan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!