大家好,我是贝贝。
今天咱们聊聊用PHP写SEO爬虫工具这件事。
市面上现成的SEO工具很多。
但有时候它们不太合心意。
要么功能太多用不上,要么想查的数据没有。
自己写的话,灵活,想抓什么就抓什么。
成本也低,一台服务器就能跑起来。
爬虫说白了就是模仿浏览器访问网页。
然后把网页内容拿回来分析。
用PHP做,主要是用到cURL或者file_get_contents函数。
我习惯用cURL,因为能设置的参数多,控制更细。
开始前,你得确保服务器环境支持:
先写一个最简单的函数,用来抓取网页内容。
function fetchUrl($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_TIMEOUT, 10);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
这段代码设置了几个关键参数。
CURLOPT_RETURNTRANSFER 让结果以字符串返回。
CURLOPT_FOLLOWLOCATION 会自动跟进301、302跳转。
TIMEOUT设成10秒,防止某个页面卡住太久。
现在很多网站有反爬措施。
直接爬可能会被屏蔽。
有几个常见的处理办法。
在代码里加上请求头大概是这样的:
$headers = [
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: zh-CN,zh;q=0.9',
];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
抓回来的是完整的HTML代码。
我们需要从中提取有用的部分。
比如标题、描述、H1标签、出站链接这些。
不建议用正则表达式去匹配,容易出错。
最好用DOM解析器。
PHP可以用内置的DOMDocument类。
$dom = new DOMDocument();
@$dom->loadHTML($htmlContent);
$titleTags = $dom->getElementsByTagName('title');
if ($titleTags->length > 0) {
$pageTitle = $titleTags->item(0)->nodeValue;
}
用getElementsByTagName可以拿到各种标签。
取链接就用`a`标签,取图片就用`img`标签。
光把数据抓下来不够,得分析。
下面这几个是SEO里常看的点。
可以写一些函数来专门检查这些项目。
比如检查标题长度:
function checkTitleLength($title) {
$len = mb_strlen($title, 'UTF-8');
if ($len < 10) return '太短';
if ($len > 60) return '太长';
return '合适';
}
爬下来的数据得存起来。
数据量小的话,存文本文件或SQLite就行。
数据量大或者要频繁查询,建议用MySQL。
设计数据表的时候,至少要有这些字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | INT | 自增主键 |
| url | VARCHAR(500) | 爬取的网址 |
| title | VARCHAR(200) | 页面标题 |
| status_code | INT | HTTP状态码 |
| fetch_time | DATETIME | 抓取时间 |
存到数据库后,分析就方便了。
可以写SQL语句统计标题的平均长度。
或者找出所有没有H1标签的页面。
如果要爬的网站很多,得考虑效率。
单线程爬太慢,可以考虑多线程。
但PHP本身对多线程支持不算好。
一个变通的办法是用多个进程。
可以把要爬的URL列表分成几份。
然后同时运行多个PHP脚本,各爬一份。
用Linux的crontab来定时启动爬虫任务。
比如每天凌晨2点跑一次:
0 2*/usr/bin/php /path/to/your/crawler.php
最后说说我遇到过的一些问题。
还有一点很重要,要尊重robots.txt。
爬之前先检查一下目标网站的robots文件。
别去爬人家明确禁止的目录。
控制好爬取频率,别把人家服务器搞垮了。
大概就是这些内容。
自己写爬虫听起来复杂,但拆开一步步做,其实能搞定。
关键是先跑通一个最简单的流程,然后再慢慢加功能。
本文由小艾于2026-04-27发表在爱普号,如有疑问,请联系我们。
本文链接:https://www.ipbcms.com/4301.html