我正在构建一个 php+querypath 爬虫来原型化一个想法。我担心一旦我运行它,目标站点可能会受到某种程度的影响,因为它有大量我要抓取的相关页面——目前有 1361 个页面。
有哪些建议可以将对目标站点的影响降至最低?
我正在构建一个 php+querypath 爬虫来原型化一个想法。我担心一旦我运行它,目标站点可能会受到某种程度的影响,因为它有大量我要抓取的相关页面——目前有 1361 个页面。
有哪些建议可以将对目标站点的影响降至最低?
由于您正在构建一个爬虫,因此您对目标网站的唯一影响就是耗尽他们的带宽。
为了将影响降至最低,您可以执行以下操作:
1. 在构建爬虫时,在您的计算机上下载目标站点的示例页面并在该副本上测试您的脚本。
2. 确保正在运行以抓取 1361 页面的循环运行正常,并且每个页面只下载一次。
3. 确保您的脚本一次只下载 1 个页面,并且可以选择在每次提取之间包含一个时间间隔,以减少目标服务器上的负载。
4. 根据每个页面的重量,您可以决定在几小时/几天/几个月内下载整个 1361 个页面。
QueryPath 本身将发出普通的 HTTP 请求——一点也不花哨。1361也不一定是一个大数字。
我建议您循环运行爬网,连续抓取一些页面(例如 10 个),休眠几秒钟,然后再抓取十个。假设 $urls 是一个 URL 数组,你可以尝试这样的事情:
$count = count($urls);
$interval = 10; // Every ten times...
$wait = 2; // Wait two seconds.
for ($i = 0; $i < $count; ++$i) {
// Do whatever you're going to do with QueryPath.
$qp = qp($url);
if ($i > 0 && $i % $interval == 0) {
sleep($wait);
}
}
正如之前的海报所暗示的,使用较少数量的 URL 进行测试,然后从那里开始。
以下是一些其他提示: