php网站制作中curl采集需要注意的一些地方和技巧
1、首先要获取到对方网址的所有内容,可能你会想到用file_gets_contents来获取,但此函数不适合用于获取远程文件,用于打开本地txt文件还是蛮好用的。那么用什么来获取呢?Curl,这个php的扩展来处理。下面就是一个简单的获取网页内容的基本配置,更多参数配置可以到网上去搜。
2、在采集网页匹配数据时,特别是在列表页,可以先把获取到的对方所有的空格换行等html标签去掉,写起正则来就会容易很多。这里提供一个函数:
3、在获取到对方的数据的时候就要开始正则匹配了,这里介绍几个常有的匹配规则:
一个是任意字符(.*?),另一个是([\s\S]*?)表示包括换行符的任意字符,在匹配过程中够用了。然后选择匹配模式i即可。
4、介绍一下采集的思路,可以先把符合页面的数据下载下来保存为txt文件,再来本地处理就更快一些。还有就是为了避免频繁访问对方网站或数据丢失状态可以加一个while(){}循环或是sleep()暂停几秒来处理。把相关的数据库处理函数要封装好,直接调用。
5、还有一个重要的事情,很多人可能会忽略,就是页面的编码问题,如果对方网站是gbk的编码,则相应的php文件或是用于提交条件的html文件也会是gbk的编码。但是这会存在一个问题,就是发生在gbk的html向gbk的php页面提交中文数据的时候,gbk的php文件可能就不会给你反应,如果你用这些中文数据去匹配的时候会遇到问题。于是要转变思路,utf-8是最好的编码模式,所以我们要采用utf-8的编码,而对方的又是gbk的,如何做呢?
$allcontent =iconv('gbk', 'utf-8',removetag(curl_exec($ch)));
上面的这样转换就ok了!所有的都用utf-8
本文作者:优加网络王国梁