PHP 使用 file_get_contents() 函数实现采集网页

2016-02-28
1分钟阅读时长

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

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

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

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

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

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

图没了

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

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

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

图没了

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

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

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

完整代码:

$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 和正则表达式的知识可以使用百度了解!

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

本文作者:她和她的猫
本文地址https://her-cat.com/posts/2016/02/28/php-collect-page/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!