下面是一个基于 PHP 的简单爬虫示例,用于从一个网站中抓取文章列表和文章内容。该示例使用 PHP 内置的 cURL 库进行网络请求,使用 DOM 解析库和 XPath 查询语言来解析 HTML 文档。 ```php <?php // 设置抓取的网站 URL 和抓取的文章数量 $url = 'https://www.example.com/news'; $max_articles = 10; // 创建 cURL 会话 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 发送请求并获取响应 $response = curl_exec($ch); if ($response === false) { die('Error: ' . curl_error($ch)); } // 关闭 cURL 会话 curl_close($ch); // 创建 DOM 解析器对象 $dom = new DOMDocument(); $dom->loadHTML($response); // 创建 XPath 查询对象 $xpath = new DOMXPath($dom); // 使用 XPath 查询语句查找文章链接 $links = $xpath->query('//a[@class="article-link"]'); // 遍历文章链接并抓取文章内容 $i = 0; foreach ($links as $link) { // 检查是否已抓取足够数量的文章 if ($i >= $max_articles) { break; } // 创建 cURL 会话 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $link->getAttribute('href')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 发送请求并获取响应 $response = curl_exec($ch); if ($response === false) { die('Error: ' . curl_error($ch)); } // 关闭 cURL 会话 curl_close($ch); // 创建 DOM 解析器对象 $article_dom = new DOMDocument(); $article_dom->loadHTML($response); // 创建 XPath 查询对象 $article_xpath = new DOMXPath($article_dom); // 使用 XPath 查询语句查找文章标题和内容 $title = $article_xpath->query('//h1[@class="article-title"]')->item(0)->nodeValue; $content = $article_xpath->query('//div[@class="article-content"]')->item(0)->nodeValue; // 打印文章标题和内容 echo "Title: $title\n"; echo "Content: $content\n"; // 增加已抓取文章数量 $i++; } ``` 该示例首先设置要抓取的网站 URL 和要抓取的文章数量,然后使用 cURL 库发送 HTTP 请求,获取网站的 HTML 页面。接着使用 DOM 解析库和 XPath 查询语言解析 HTML 页面,查找文章列表中的链接,并遍历链接来抓取文章内容。在抓取文章内容时,同样使用 cURL 库发送 HTTP 请求,获取文章的 HTML 页面,并使用 DOM 解析库和 XPath 查询语言解析页面,查找文章标题和内容。 需要注意的是,在编写爬虫时,需要遵守网站的爬虫规则,不要过度频繁地请求网站,以免对网站造成不必要的负担。同时,需要注意处理一些细节问题,例如处理特殊字符、处理空白节点等。