php获取网页内容方法 采集程序
2015-10-26 17:10
791 查看
用php采集程序,抓取页面的内容在实际的开发当中是非常有用的,如作一个简单的内容采集器,提取网页中的部分内容等等
抓取到的内容在通过正则表达式做一下过滤就得到了你想要的内容,几种常用的用php抓取网页中的内容的方法。
1.file_get_contents
2.curl
注:
1.使用file_get_contents和fopen必须空间开启allow_url_fopen。方法:编辑php.ini,设置allow_url_fopen = On,allow_url_fopen关闭时fopen和file_get_contents都不能打开远程文件。
2.使用curl必须空间开启curl。方法:windows下修改php.ini,将extension=php_curl.dll前面的分号去掉,而且需要拷贝ssleay32.dll和libeay32.dll到C:\WINDOWS\system32下;Linux下要安装curl扩展。
自己写的采集程序:
抓取到的内容在通过正则表达式做一下过滤就得到了你想要的内容,几种常用的用php抓取网页中的内容的方法。
1.file_get_contents
<?php $url = "http://www.songshujin.com"; $contents = file_get_contents($url); //如果出现中文乱码使用下面代码 //$getcontent = iconv("gb2312", "utf-8",$contents); echo $contents; ?>
2.curl
<?php $url = "http://www.songshujin.com"; $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); //在需要用户检测的网页里需要增加下面两行 //curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); //curl_setopt($ch, CURLOPT_USERPWD, US_NAME.":".US_PWD); $contents = curl_exec($ch); curl_close($ch); echo $contents; ?>3.fopen->fread->fclose
<?php $handle = fopen ("http://www.songshujin.com", "rb"); $contents = ""; do { $data = fread($handle, 1024); if (strlen($data) == 0) { break; } $contents .= $data; } while(true); fclose ($handle); echo $contents; ?>
注:
1.使用file_get_contents和fopen必须空间开启allow_url_fopen。方法:编辑php.ini,设置allow_url_fopen = On,allow_url_fopen关闭时fopen和file_get_contents都不能打开远程文件。
2.使用curl必须空间开启curl。方法:windows下修改php.ini,将extension=php_curl.dll前面的分号去掉,而且需要拷贝ssleay32.dll和libeay32.dll到C:\WINDOWS\system32下;Linux下要安装curl扩展。
自己写的采集程序:
public function foreign(){ header("Content-type:text/html;charset=utf-8"); $content = file_get_contents("http://www.songshujin.com"); $preg="/<tbody[\s|\S]*?<\/tbody>/"; preg_match_all($preg,$content,$arr); $content=preg_replace('/<tbody.*?>/',' ',$arr[0][0]); $content=preg_replace('/<\/tbody>/',' ',$content); $content=preg_replace('/<tr.*?>/',' ',$content); $content=preg_replace('/<\/tr>/','|',$content); $content=preg_replace('/<td.*?>/',' ',$content); $content=preg_replace('/<\/td>/',' ',$content); $content=preg_replace('/<span.*?>/',' ',$content); $content=preg_replace('/<\/span>/',' ',$content); $content=preg_replace('/<a.*?>/',' ',$content); $content=preg_replace('/<\/a>/',' ',$content); $content=preg_replace ( "/\s(?=\s)/","\\1", $content); $content=substr($content,0,strlen($content)-2); $content=explode('|',$content); foreach ($content as $key => $value) { $value=trim($value); $value=explode(' ',$value); $content[$key]=$value; } $foreignwhere=array('EURUSD','GBPUSD','USDJPY','USDSEK','USDCAD','AUDUSD','CHFUSD'); foreach ($content as $k=>$v){ if(in_array($v[0], $foreignwhere)){ $foreign[]=$v; } } foreach ($foreign as $k=>$v){ $data['code']=$v[0]; $data['name']=iconv('GB2312','UTF-8',$v[1]); $data['price']=$v[2]; $data['change']=$v[3]; $data['opened']=$v[4]; $data['max']=$v[5]; $data['min']=$v[6]; $data['prec']=$v[7]; $data['buy']=$v[8]; $data['sell']=$v[9]; $data['time']=time(); M('foreign')->add($data); } echo "基本汇率数据注入完成!"; }
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- php xml 入门学习资料