Quét trang web bằng PHP – Hướng dẫn quét trang web – PHP

Quét web là một cơ chế để thu thập dữ liệu các trang web bằng các công cụ hoặc tiện ích phần mềm. Nó đọc nội dung của các trang web qua luồng mạng.

Công nghệ này còn được gọi là thu thập dữ liệu web hoặc trích xuất dữ liệu. Trong hướng dẫn trước, chúng ta đã học cách trích xuất các trang theo URL của nó.

Có nhiều thư viện PHP hỗ trợ tính năng này. Trong hướng dẫn này, chúng ta sẽ thấy một trong những thành phần quét web phổ biến có tên DomCrawler.

Thành phần này nằm bên dưới khung công tác PHP Symfony. Bài viết này có mã để tích hợp và sử dụng thành phần này để thu thập dữ liệu các trang web.

quét web php

Chúng tôi cũng có thể tạo các tiện ích tùy chỉnh để lấy nội dung từ các trang từ xa. PHP cho phép các hàm cURL tích hợp để xử lý chu kỳ phản hồi yêu cầu của mạng.

Giới thiệu về DomCrawler

Thành phần DOMCrawler của thư viện Symfony dùng để phân tích nội dung HTML và XML.

Nó xây dựng bộ điều khiển thu thập thông tin để tiếp cận bất kỳ nút nào của cấu trúc cây HTML. Nó chấp nhận các truy vấn để lọc các nút cụ thể từ HTML hoặc XML đầu vào.

Nó cung cấp nhiều tiện ích và tính năng thu thập dữ liệu.

  1. Lọc nút bằng truy vấn XPath.
  2. Duyệt qua nút bằng cách chỉ định bộ chọn HTML theo vị trí của nó.
  3. Tên nút và đọc giá trị.
  4. Chèn HTML hoặc XML vào thẻ vùng chứa đã chỉ định.

Các bước để tạo một công cụ quét web trong PHP

  1. Cài đặt và khởi tạo thư viện máy khách HTTP.
  2. Cài đặt và khởi tạo thư viện trình thu thập thông tin để phân tích cú pháp phản hồi.
  3. Chuẩn bị các tham số và kết hợp chúng với yêu cầu cạo nội dung từ xa.
  4. Thu thập dữ liệu phản hồi và đọc nội dung.

Trong ví dụ này, chúng tôi đã sử dụng thư viện HTTPClient để gửi yêu cầu.

Ví dụ PHP quét web

Ví dụ này tạo một phiên bản ứng dụng khách và gửi yêu cầu đến URL mục tiêu. Sau đó, nó nhận nội dung web trong một đối tượng phản hồi.

PHP DOMCrawler phân tích cú pháp dữ liệu phản hồi để lọc ra nội dung web cụ thể.

Trong ví dụ này, trình thu thập thông tin đọc tiêu đề trang web bằng cách phân tích cú pháp h1 chữ. Ngoài ra, nó phân tích cú pháp nội dung từ trang web HTML được lọc bởi đoạn văn nhãn.

Hình ảnh dưới đây cho thấy cấu trúc dự án ví dụ với tập lệnh PHP để loại bỏ nội dung trang web.

web cạo cấu trúc dự án php

Cách cài đặt thư viện khung Symfony

Chúng tôi đang sử dụng Symfony phổ biến để cạo nội dung web. Nó có thể được cài đặt thông qua Composer.
Sau đây là các lệnh để cài đặt các phụ thuộc.

composer require symfony/http-client symfony/dom-crawler
composer require symfony/css-selector

Sau khi chạy các lệnh soạn thảo này, thư mục nhà cung cấp có thể ánh xạ các phần phụ thuộc cần thiết bằng tệp autoload.php. Tập lệnh dưới đây nhập các phụ thuộc của tệp này.

index.php

<?php

require 'vendor/autoload.php';

use Symfony\Component\HttpClient\HttpClient;
use Symfony\Component\DomCrawler\Crawler;

$httpClient = HttpClient::create();

// Website to be scraped
$website="

// HTTP GET request and store the response
$httpResponse = $httpClient->request('GET', $website);
$websiteContent = $httpResponse->getContent();

$domCrawler = new Crawler($websiteContent);

// Filter the H1 tag text
$h1Text = $domCrawler->filter('h1')->text();
$paragraphText = $domCrawler->filter('p')->each(function (Crawler $node) {
    return $node->text();
});

// Scraped result
echo "H1: " . $h1Text . "\n";
echo "Paragraphs:\n";
foreach ($paragraphText as $paragraph) {
    echo $paragraph . "\n";
}
?>

Các cách xử lý dữ liệu bị loại bỏ trên web

Mọi người sẽ làm gì với dữ liệu được quét trên web? Mã ví dụ được tạo cho bài viết này sẽ in nội dung ra trình duyệt. Trong một ứng dụng thực tế, dữ liệu này có thể được sử dụng cho nhiều mục đích.

  1. Nó cung cấp dữ liệu để tìm các xu hướng phổ biến với nội dung trang web tin tức được thu thập.
  2. Nó tạo khách hàng tiềm năng để hiển thị biểu đồ hoặc số liệu thống kê.
  3. Nó giúp trích xuất hình ảnh và lưu trữ chúng trong phần phụ trợ của ứng dụng.

Nếu bạn muốn xem cách trích xuất hình ảnh từ các trang, bài viết được liên kết có một mã đơn giản.

thận trọng

Loại bỏ trang web là hành vi trộm cắp nếu bạn loại bỏ chính sách sử dụng của trang web. Bạn nên đọc chính sách của một trang web trước khi cạo nó. Nếu các điều khoản không rõ ràng, bạn có thể xin phép rõ ràng từ chủ sở hữu trang web. Ngoài ra, trong hầu hết các trường hợp, thương mại hóa nội dung được tìm kiếm trên web là một tội ác. Xin phép trước khi thực hiện bất kỳ hoạt động nào như vậy.

Trước khi thu thập dữ liệu nội dung của trang web, điều cần thiết là phải đọc các điều khoản của trang web. Đó là để đảm bảo rằng công chúng có thể bị cạo.

Mọi người cung cấp quyền truy cập API hoặc nguồn cấp dữ liệu để đọc nội dung. Việc khai thác dữ liệu với việc cung cấp quyền truy cập API phù hợp là công bằng. Chúng ta đã biết cách trích xuất tiêu đề, mô tả và hình thu nhỏ của video bằng YouTube API.

Đối với mục đích học tập, bạn có thể lưu trữ một trang web giả với nội dung lorem ipsum và cạo nó.

↑ Quay lại Đầu trang


Xem thêm tin mới và bổ ích tại:

Kiến thức gia đình

Tri thức đời sống

– Kênh youtube Kiến thức gia đình