文档章节

使用PHP做网页采集实例过程总结

章郎虫
 章郎虫
发布于 2013/12/27 10:06
字数 572
阅读 115
收藏 0

最近有个任务是需要我检查一些网站,如果纯手工检查的话,感觉既费时又无聊。所以我就想用采集。思路其实很简单,先把网站的源码采集下来,然后用正则表达式去匹配符合的链接,最后把标题和网址入库、分析。因为我使用最多的是php,所以打算用php做网页采集。

第一步,链接数据库,取出需要检查的网站和正则。

数据库这里我用了postgresql,数据库和表已经按要求建好。因为默认配置的环境是centos系统加nginx、mysql和php,所以首先是配置环境。配置具体不在这里多说,下次总结。环境配置好后在php中用pg_connect连接数据库,这里我连接了两个不同的数据库。

$conn_1=pg_connect("host=xxx.xxx.xxx.xxx port=5432 dbname=mydb1 user=postgres password=xxxxxx") ;

$conn_2=pg_connect("host=xxx.xxx.xxx.xxx port=5432?dbname=mydb2?user=postgres password=xxxxxx") ;

第二步,取出网页源码,对源码进行初步处理。

不同网站编码格式不一样,需要先把编码统一转换成utf-8,不然之后入库会出现乱码。

//获取网页源码

//$url='http://www.sijitao.net/' ;

$str = file_get_contents($url);

//使用preg_match和正则表达式取出编码

$wcharset = preg_match("/<meta.+?charset=[^\w]?([-\w]+)/i",$str,$temp) ? strtolower($temp[1]):"" ;

//编码转换

if($wcharset){

$str=iconv("$wcharset", "UTF-8", $str) ;

}

这里我还使用str_ireplace()函数对取到的源码做了些字符替换,不然最后用正则匹配网址的时候会出现问题。

第三步,匹配处理后的源码字符串,对匹配的数据入库。

从数据库中取出对应的正则,保存在$preg变量,符合正则的数据已数组形式保存在$m。

$pat = "/<a(.*?)href=\"($preg)\"(.*?)>(.*?)<\/a>/is";

preg_match_all($pat, $str, $m);

$cnt=count($m[2]) ;

for($i=0;$i<$cnt;$i++){

if(strip_tags($m[2][$i])){

$url=strip_tags($m[2][$i]) ;

$url=$m[2][$i] ;

}

if(strip_tags($m[4][$i])){

$title=strip_tags($m[4][$i]) ;

}

else{

$title="There's Something Errors!" ;

}

//编写代码,对title和url进行入库操作。

}

}

采集单个网页这样基本上就算完成了。总结,这里其实就用了preg_match(),preg_match_all()和str_ireplace()函数。程序菜鸟,写的不好请见谅。

原文地址:http://www.sijitao.net/1511.html

© 著作权归作者所有

共有 人打赏支持
章郎虫
粉丝 1
博文 16
码字总数 13400
作品 0
宁波
系统管理员
私信 提问
《CURL技术知识教程》系列分享专栏

《CURL技术知识教程》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201737.html 文章 PHP采集相关教程之一 CURL函数库 php中通过curl模拟登陆discuz论坛的实现...

开元中国2015
11/06
0
0
《CURL技术知识教程》系列技术教程整理

《CURL技术知识教程》系列技术教程整理 有时间会不断更新,大家有什么好的推荐的可以在下面回复,我会酌情收录 1PHP采集相关教程之一 CURL函数库 2php中通过curl模拟登陆discuz论坛的实现代码...

开元中国2015
2015/05/07
470
0
福布斯系列之数据采集 | Python数据分析项目实战

1 数据采集概述 开始一个数据分析项目,首先需要做的就是get到原始数据,获得原始数据的方法有多种途径。比如: 获取数据集(dataset)文件 使用爬虫采集数据 直接获得excel、csv及其他数据文...

lemon
2017/09/04
0
0
scrapy学习实例(四)采集淘宝数据并展示

本节代码 : zhangslob/Taobao_duoshou 万水千山总是情,给个star行不行 铛铛铛,懒惰了一段时间,咱接着学Scrapy。这一期玩点新花样,使用Flask展示我们的数据。效果如下图: 有些重复的 ╮...

崔斯特
2017/12/19
0
0
PHP模拟登录并获取数据

cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数, 开发者可以从PHP手册中获取更多关于cURL信息。本文...

Louis_88
2015/09/19
99
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部