我正在开发一个需要抓取用户提交的网站的一部分的应用程序。我想从网站上收集有用且可读的内容,而不是整个网站。如果我查看也执行此操作的应用程序(例如thinkery),我注意到它们以某种方式设法创建了一种抓取网站的方法,尝试猜测有用的内容是什么,以可读的格式显示它,它们做得非常快.
我一直在玩 cURL,我已经接近我想要的结果,但我有一些问题,想知道是否有人有更多的见解。
$ch = curl_init('http://www.example.org');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// $content contains the whole website
$content = curl_exec($ch);
curl_close($ch);
使用上面非常简单的代码,我可以抓取整个网站,使用 preg_match() 我可以尝试查找包含字符串“content”、“summary”等的类、id 或属性的 div。
如果 preg_match() 有结果我可以相当猜测我找到了相关内容并将其保存为已保存页面的摘要。我遇到的问题是 cURL 将整个页面保存在内存中,因此这会占用大量时间和资源。而且我认为对如此大的结果执行 preg_match() 也会占用大量时间。
有没有更好的方法来实现这一目标?