当前位置:首页 > 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):

php 爬虫实现

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;
    // 抓取并处理每页内容
}

数据存储

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

php 爬虫实现

// 存储到 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实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (int…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必要…

php实现聊天

php实现聊天

实现 PHP 聊天功能的方法 使用 WebSocket 和 PHP 实现实时聊天 WebSocket 是一种全双工通信协议,适合实现实时聊天功能。PHP 可以通过 Ratchet 库实现 WebSo…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…

php 实现面包屑导航

php 实现面包屑导航

实现面包屑导航的方法 面包屑导航(Breadcrumb Navigation)是一种常见的网站导航方式,用于显示用户当前页面的路径。以下是几种在 PHP 中实现面包屑导航的方法。 基于 URL 路径…