采集网页关键在于两个地方:

  • 如何获取目标网页HTML源代码。
  • 如何使用正则匹配出需要的内容。

我们使用《终于到了。》这篇文章作为目标网页,获取网页源代码比较简单的方法就是使用file_get_contents()函数,使用方法:

1
$content = file_get_contents("https://her-cat.com");

变量 $content 就是用来储存我们使用 file_get_contents() 获取的网页源代码。

接下来就是如何使用正则匹配出正文内容,我们先用浏览器打开这个页面,然后右键查看源代码,找到正文处代码。

图没了

找到包裹着正文的 HTML 标签,就可以使用 preg_match_all() 函数匹配出正文。

1
preg_match_all('/<div class="post-content">(.*)<\/div>/', $content, $result);

使用 var_dump() 函数打印 $result 变量。

图没了

从图中可以看出,打印出了一个二维数组,虽然匹配出了正文,但是里面还有一些 HTML 标签,接下来要做的就是使用 str_replace() 函数去掉这些标签。

1
2
$arr = array('<p>''</p>''<br/>');
$result = str_replace($arr, '', $result[1][0]);

最后输出变量 $result 就可以了。

完整代码:

1
2
3
4
5
$content = file_get_contents("https://her-cat.com");
preg_match_all('/<div class="post-content">(.*)<\/div>/', $content, $result);
$arr = array('<p>''</p>''<br/>');
$result = str_replace($arr, '', $result[1][0]);
echo $result;

最后总结,使用PHP采集网页需要注意的地方是,file_get_contents() 获取网页源代码的效率比较低,推荐使用 curl。还有就是正则表达式,正则表达式需要根据网页源代码来编写,并不是一成不变的。关于 curl 和正则表达式的知识可以使用百度了解!

这是一篇过去很久的文章,其中的信息可能已经有所发展或是发生改变。