萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP 爬取百度圖片搜索結果示例

說明

本文展示一個簡單的 PHP 腳本,通過百度移動端圖片搜索接口(JSON 格式)獲取關鍵詞「美女」的圖片鏈接並分頁顯示。僅供學習 HTTP 請求與 JSON 解析參考,實際生產請遵守目標站點 robots.txt 及服務條款,並考慮版權合規。

核心代碼

<?php
$p = isset($_GET['p']) ? (int)$_GET['p'] : 1;
$page = $p * 20; // 百度 pn 參數:起始索引

$url = 'https://m.baidu.com/img?tn=bdjsonliulan&pu=sz%401320_2001&bd_page_type=1'
     . '&tag1=%E7%BE%8E%E5%A5%B3&realword=%E7%BE%8E%E5%A5%B3&word=%E7%BE%8E%E5%A5%B3'
     . '&pn=' . $page . '&rn=20';

$json = file_get_contents($url);
$data = json_decode($json);

if (isset($data->data) && is_array($data->data)) {
    foreach ($data->data as $item) {
        if (isset($item->picurl)) {
            echo '<center><img width="640px" src="' . htmlspecialchars($item->picurl) . '"></center><br>';
        }
    }
}

$nextPage = $p + 1;
echo '<center><a href="?p=' . $nextPage . '">Next Page</a></center>';
?>

關鍵點解析

  • 請求參數: pn 為起始索引(每頁 20 張),rn=20 固定頁面大小。
  • 編碼處理: 關鍵詞經 urlencode 後傳遞,響應為 UTF-8 JSON。
  • 安全輸出: 使用 htmlspecialchars() 防止 XSS。
  • 錯誤容錯: 判斷 $data->data 存在且為數組,避免接口變更導致報錯。

現代改進建議

  1. 改用 cURL 替代 file_get_contents,支持超時、重試、Header 定制。
  2. 加入 User-Agent 模擬瀏覽器,降低被反爬風險。
  3. 緩存請求結果(Redis/文件),減少對目標站點壓力。
  4. 若需大規模抓取,請使用官方 API 或合法授權數據源。
copyright © 萬盛學電腦網 all rights reserved