PHP 使用 file_get_contents() 函数实现采集网页
采集网页关键在于两个地方:
- 如何获取目标网页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 和正则表达式的知识可以使用百度了解!
这是一篇过去很久的文章,其中的信息可能已经有所发展或是发生改变。