网站首页 > 基础教程 正文
随着时代的发展,社会越来越信息快速化,所以信息更新非常的迅速,这让很多站长在更新自家的网站信息时,显得太浪费时间,该怎么办呢?那就是通过采集将别家的信息录入到自家网站的数据库中,这样做可能对网站的优化会有一定的影响,但这不是我们今天讨论的话题,今天就用一个示例简单讲一下网站采集的的过程
我们先来看下面的一个实例,这是客户的网站要求采集太平洋网站的新闻,代码如下图所示(附说明):
<?php
header("content-type:text/html;charset=utf-8");//
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);//将为一个CURL会话设置选项。CURLOPT_URL参数是你想要的设置, 这是你想用PHP取回的URL地址,$url是这个选项给定的值
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);//如果有证书的https的,除去https里面的s,此句非常重要,不可删除,否则带有https的站点将无法打开
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//所获的内容不输出
$data=curl_exec($ch);//将页面的内容赋于$data,即$data就是我们打开网页后的内容代码
$data=iconv('gbk', 'utf-8',$data);//防止中文的乱码,做转码处理
curl_close($ch);//关闭cURL 会话
咱们先打开太平洋新闻网,然后查看网页源代码,找到要采集的信息内容,截图下图:
根据上面的代码,我们可以写一个正则表达:
$path = '#<i class="lpic"><a href="(.*?)" target="_blank"><img width="200" height="150" src="//www1.pconline.com.cn/images/blank.gif" (.*?)="(.*?)" alt=""> </a>
</i>
<dl><dt><a href="(.*?)" target="_blank">(.*?)</a></dt><dd><span class="des">(.*?)</span><p class="info"><span class="channel"><a href="(.*?)" target="_blank">(.*?) </a></span><span class="date">| (.*?)</span></p></dd></dl>#is'; preg_match_all($path,$data,$arr);//正则匹配,其中$path是匹配的规则,$data是想要匹配的内容,$datapath给定正则表达式 的匹配结果并且将它们以flag指定顺序输出到$arr中.
$array = array();//初始化一个数组
foreach($arr as $k=>$v){
if($k==3||$k==4||$k==5||$k==6||$k==9){ //想要的参数有哪些
$array[$k] = $v;}}
if(!empty($array)){
$array = array_values($array);//重置数组key,让数组的key从0开始计算,也可以不重置,但不要弄错
}
/*
其中
$array[0] 是信息的图片绝对地址的数组
$array[1] 是信息链接地址的数组
$array[2] 是信息标题的数组
$array[3] 是信息列表简介的数组
$array[4] 是信息时间的数组
Print_r($array);根据输入的数组信息就知道如何把数据添加到数据库了,然后根据url再采集信息里面的详细内容,以达到采集整条信息的完整性
*/
- 上一篇: PHP正则表达式核心技术完全详解 第11节贪婪匹配与禁止贪婪
- 下一篇: PHP 的运行方式有哪些?
猜你喜欢
- 2025-01-03 C之正则表达式
- 2025-01-03 Wordpress建站教程:网站添加自动Tag标签内链 提升SEO优化效果
- 2025-01-03 Thinkphp3.2.3及以下版本漏洞整理
- 2025-01-03 laravel通过artisan命令一键生成增_删_改_查验证命令
- 2025-01-03 2小时快速搭建一个高可用的IM系统
- 2025-01-03 FCKeditor上传漏洞的总结分析
- 2025-01-03 php从远程URL获取(mp4 mp3)音视频的流媒体数据
- 2025-01-03 记一次靶场实战【网络安全】
- 2025-01-03 滑动解锁提交评论插件_一招屏蔽WordPress垃圾评论
- 2025-01-03 浅解用PHP实现MVC
- 01-08将 Excel 表格中每三行合并到一个单元格中,用“、”隔开
- 01-08使用办公软件按表格中从上往下合并成1个TXT文档并添加分隔符号
- 01-08新歌尝鲜 3《分割线》
- 01-08怎么分割视频?这几种分割方法非常简单
- 01-08视频怎么分割?教你简单的三种方法
- 01-08分隔:整理大脑的 5 种方法
- 01-08「深度」凯文-杜兰特的九年雷霆光阴
- 01-08深度丨涅磐重生到“超级3D”球星?他还是无所不能的保罗·乔治
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)