一个PHP实现的轻量级简单爬虫可以使用cURL库和DOMDocument类。使用cURL库抓取网页内容,然后使用DOMDocument类解析HTML文档,提取所需的数据。将提取到的数据进行处理和存储。
一个简单的PHP爬虫实现

(图片来源网络,侵删)
1. 准备工作
确保你的服务器已经安装了PHP,我们将使用cURL库来获取网页内容,如果你的服务器上还没有安装cURL,可以通过以下命令进行安装(以Ubuntu为例):
sudo aptget install phpcurl
2. 创建一个新的PHP文件
在你的项目目录中,创建一个名为simple_crawler.php的新文件。
3. 编写爬虫代码

(图片来源网络,侵删)
在simple_crawler.php文件中,添加以下代码:
<?php
// 初始化cURL会话
$ch = curl_init();
// 设置要抓取的URL
$url = "https://example.com";
// 设置cURL选项
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
// 执行cURL会话并获取结果
$result = curl_exec($ch);
// 检查是否有错误发生
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
} else {
// 输出抓取到的内容
echo $result;
}
// 关闭cURL会话
curl_close($ch);
?>
4. 运行爬虫
保存文件并在浏览器中访问simple_crawler.php,你应该能看到从https://example.com抓取到的内容。
5. 常见问题与解答
问题1:如何修改爬虫以抓取多个页面?

(图片来源网络,侵删)
答案:你可以将抓取单个页面的逻辑封装成一个函数,然后通过循环或递归调用该函数来抓取多个页面。
function fetch_page($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
} else {
return $result;
}
curl_close($ch);
}
$urls = ["https://example.com/page1", "https://example.com/page2", "https://example.com/page3"];
foreach ($urls as $url) {
echo fetch_page($url);
}
问题2:如何处理抓取过程中的错误?
答案:在上面的示例代码中,我们已经使用了curl_errno()和curl_error()函数来检查是否有错误发生,如果有错误,我们可以输出错误信息,在实际项目中,你可能需要根据具体需求来决定如何处理这些错误,例如记录日志、发送通知等。