当前位置:首页 > PHP

php 爬虫实现

2026-01-29 13:44:43PHP

PHP 爬虫实现方法

使用 cURL 获取网页内容

cURL 是 PHP 中用于发送 HTTP 请求的强大工具,适用于抓取网页内容。以下是一个基本示例:

$url = "https://example.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

解析 HTML 内容

使用 DOMDocument 或 SimpleHTMLDom 解析 HTML 内容,提取所需数据:

$dom = new DOMDocument();
@$dom->loadHTML($response);
$xpath = new DOMXPath($dom);
$titles = $xpath->query("//h1");
foreach ($titles as $title) {
    echo $title->nodeValue . "\n";
}

处理 JavaScript 渲染的页面

对于动态加载的内容,可使用无头浏览器工具如 Puppeteer 的 PHP 封装(例如 ChromePHP):

use HeadlessChromium\BrowserFactory;
$browserFactory = new BrowserFactory();
$browser = $browserFactory->createBrowser();
$page = $browser->createPage();
$page->navigate('https://example.com')->waitForNavigation();
$html = $page->getHtml();
$browser->close();

处理分页和链接

自动遍历分页或链接时,需递归或循环处理:

$baseUrl = "https://example.com/page/";
for ($i = 1; $i <= 5; $i++) {
    $pageUrl = $baseUrl . $i;
    // 抓取并处理每页内容
}

数据存储

将抓取的数据保存到数据库或文件:

// 存储到 CSV
$file = fopen('data.csv', 'w');
fputcsv($file, ['Title', 'URL']);
foreach ($data as $item) {
    fputcsv($file, [$item['title'], $item['url']]);
}
fclose($file);

遵守 robots.txt

检查目标网站的 robots.txt,避免爬取禁止的页面:

$robotsUrl = "https://example.com/robots.txt";
$robotsContent = file_get_contents($robotsUrl);
if (strpos($robotsContent, 'Disallow: /private/') !== false) {
    // 跳过禁止爬取的路径
}

设置延迟和代理

避免被封禁,需设置请求间隔和使用代理:

curl_setopt($ch, CURLOPT_PROXY, 'proxy.example.com:8080');
sleep(2); // 延迟 2 秒

异常处理

添加错误处理逻辑,应对网络问题或解析失败:

try {
    $response = curl_exec($ch);
    if ($response === false) {
        throw new Exception(curl_error($ch));
    }
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}

php 爬虫实现

标签: 爬虫php
分享给朋友:

相关文章

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (HT…

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session…

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…