首頁 後端開發 php教程 基於 PHP 的爬蟲框架簡介及應用實例詳解

基於 PHP 的爬蟲框架簡介及應用實例詳解

Jun 14, 2023 pm 03:58 PM
php 爬蟲框架 應用實例

隨著網路資訊的爆炸性成長,大量的資料都儲存在網站上,這些資料對於許多使用者都具有重要價值。因此,爬蟲技術逐漸成為了一種強大的利用網路數據的手段。

本文介紹了一個基於 PHP 語言的爬蟲框架:Guzzle和Goutte。 Guzzle是為 PHP 開發的 HTTP 用戶端,可以用來傳送 HTTP 請求和與 REST 資源進行互動。 Goutte是它的補充,它是一個基於 Guzzle 的 Web 爬蟲框架,可以方便地獲取網頁內容並進行資料的提取分析。

首先,我們要在 PHP 中安裝 Guzzle 和 Goutte。可以透過 Composer 進行安裝,具體指令如下:

composer require guzzlehttp/guzzle
composer require fabpot/goutte
登入後複製

安裝完成後,先來了解一下 Guzzle 的使用方法。我們可以透過以下程式碼來傳送HTTP GET 請求,並取得回應內容:

<?php
use GuzzleHttpClient;

$client = new Client();
$response = $client->get('https://www.example.com');
echo $response->getBody();
登入後複製

這段程式碼首先建立了一個GuzzleClient 對象,然後使用get() 方法向指定網址發送了一個GET 請求,並獲取到了響應內容。呼叫 getBody() 方法可以取得到響應體的內容。

Goutte 是基於 Guzzle 開發的 Web 爬蟲框架,其使用方法也很簡單。以下是一個簡單的Goutte 使用範例:

<?php
use GoutteClient;

$client = new Client();
$crawler = $client->request('GET', 'https://www.example.com');
$crawler->filter('h1')->each(function ($node) {
    echo $node->text() . "
";
});
登入後複製

這段程式碼使用Goutte 建立了一個Client 對象,並向指定網址發送GET 請求,然後取得了回應體,並將其解析成了一個DOM 對象。 $crawler->filter('h1') 是一個篩選器,它指定了頁面上所有h1 標籤的節點,然後它呼叫了each() 方法,對於每個h1 標籤的節點,都會執行指定的匿名函數,其中$node 是目前節點對象,它的text() 方法可以取得到節點的文字內容。

下面我們來看一個更完整的範例,它示範如何使用Goutte 爬取知乎上的問題和回答,並將其中的使用者姓名、回答內容、按讚數和回答時間儲存到一個CSV 檔案中:

<?php
use GoutteClient;

$client = new Client();
$crawler = $client->request('GET', 'https://www.zhihu.com/question/21774949');
$fp = fopen('output.csv', 'w');
fputcsv($fp, ['User', 'Content', 'Votes', 'Time']);
$crawler->filter('.List-item')->each(function ($node) use ($fp) {
    $user = $node->filter('.AuthorInfo .Popover')->text();
    $content = $node->filter('.RichText')->text();
    $votes = $node->filter('.Voters')->text();
    $time = $node->filter('.ContentItem-time')->text();
    fputcsv($fp, [$user, $content, $votes, $time]);
});
fclose($fp);
登入後複製

這段程式碼首先爬取了知乎上問題ID 為21774949 的頁面,然後使用一個檔案句柄向output.csv 檔案寫入了CSV 表頭行。接下來,使用 filter() 方法找到頁面上所有的問題和回答節點,然後對每個節點執行匿名函數。在匿名函數中,使用 filter() 方法找到每個使用者的姓名、回答內容、按讚數和回答時間,並使用 fputcsv() 方法將這四個欄位寫入到檔案中。最後關閉文件句柄。

總結來說,使用Guzzle 和Goutte 建立一個爬蟲框架非常簡單,並且具有很強的靈活性和可擴展性,可以應用於各種不同的場景,包括但不限於資料探勘、SEO優化等領域。但是,請注意,任何爬蟲都需要遵守網站的 robots.txt 文件,避免對目標網站造成過大的負擔以及侵犯用戶隱私。

以上是基於 PHP 的爬蟲框架簡介及應用實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

See all articles