php file_get_contents函数轻松采集html数据


Posted in PHP onApril 22, 2010
<?php 
//全国,判断条件是$REQUEST_URI是否含有html 
if (!strpos($_SERVER["REQUEST_URI"],".html")) 
{ 
$page="http://qq.ip138.com/weather/"; 
$html = file_get_contents($page,'r'); 
$pattern="/<B>全国主要城市、县当天和未来五天天气趋势预报在线查询<\/B>(.*?)<center style=\"padding\:3px\">/si"; 
//正则匹配之间的html 
preg_match($pattern,$html,$pg); 
echo ""; 
//正则替换远程地址为本地地址 
$p=preg_replace('/\/weather\/(\w+)\/index.htm/', 'tq.php/$1.html', $pg[1]); 
echo $p; 
} 
//省,判断条件是$REQUEST_URI是否含有? 
else if(!strpos($_SERVER["REQUEST_URI"],"?")){ 
//yoyo推荐的使用分割获得数据,这里是获得省份名称 
$province=explode("/",$_SERVER["REQUEST_URI"]); 
$province=explode(".",$province[count($province)-1]); 
$province=$province[0]; 
//被注释掉的是我自己写出来的正则,感觉写的不好,但效果等同上面 
//preg_match('/[^\/]+[\.(html)]$/',$_SERVER["REQUEST_URI"],$pro); 
//$province=preg_replace('/\.html/','',$pro[0]); 
$page="http://qq.ip138.com/weather/".$province."/index.htm"; 
//获取html数据之前先尝试打开页面,防止恶意输入地址导致出错 
if (!@fopen($page, "r")) { 
die("对不起,该地址不存在!<a href=javascript:history.back(1)>点击这里返回</a>"); 
exit(0); 
} 
$html = file_get_contents($page,'r'); 
$pattern="/五天天气趋势预报<\/B>(.*?)请输入输入市/si"; 
preg_match($pattern,$html,$pg); 
echo ""; 
//正则替换,获取省份,城市 
$p=preg_replace('/\/weather\/(\w+)\/(\w+).htm/', '$2.html?pro=$1', $pg[1]); 
echo $p; 
} 
else { 
//市,通过get传递省份 
$pro=$_REQUEST['pro']; 
$city=explode("/",$_SERVER["REQUEST_URI"]); 
$city=explode(".",$city[count($city)-1]); 
$city=$city[0]; 
//preg_match('/[^\/]+[\.(html)]+[\?]/',$_SERVER["REQUEST_URI"],$cit); 
//$city=preg_replace('/\.html\?/','',$cit[0]); 
$page="http://qq.ip138.com/weather/".$pro."/".$city.".htm"; 
if (!@fopen($page, "r")) { 
die("对不起,该地址不存在!<a href=javascript:history.back(1)>点击这里返回</a>"); 
exit(0); 
} 
$html = file_get_contents($page,'r'); 
$pattern="/五天天气趋势预报<\/B>(.*?)请输入输入市/si"; 
preg_match($pattern,$html,$pg); 
echo ""; 
//获取真实的图片地址 
$p=preg_replace('/\/image\//', 'http://qq.ip138.com/image/', $pg[1]); 
echo $p; 
} 
?>
PHP 相关文章推荐
实现树状结构的两种方法
Oct 09 PHP
php生成WAP页面
Oct 09 PHP
如何隐藏你的.php文件
Jan 04 PHP
php 方便水印和缩略图的图形类
May 21 PHP
PHP日期处理函数 整型日期格式
Jan 12 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
Jun 03 PHP
php curl获取网页内容(IPV6下超时)的解决办法
Jul 16 PHP
php和jquery实现地图区域数据统计展示数据示例
Feb 12 PHP
windows7下安装php的php-ssh2扩展教程
Jul 04 PHP
PHP模糊查询的实现方法(推荐)
Sep 06 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
Sep 09 PHP
数据结构之利用PHP实现二分搜索树
Oct 25 PHP
国外比较好的几个的Php开源建站平台小结
Apr 22 #PHP
PHP最常用的ini函数分析 针对PHP.ini配置文件
Apr 22 #PHP
php allow_url_include的应用和解释
Apr 22 #PHP
php strcmp使用说明
Apr 22 #PHP
PHP 加密解密内部算法
Apr 22 #PHP
PHP 根据IP地址控制访问的代码
Apr 22 #PHP
收集的二十一个实用便利的PHP函数代码
Apr 22 #PHP
You might like
php扩展ZF――Validate扩展
2008/01/10 PHP
解析php常用image图像函数集
2013/06/24 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
javascript 跳转代码集合
2009/12/03 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
iframe中使用jquery进行查找的方法【案例分析】
2016/06/17 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
Vue.js学习教程之列表渲染详解
2017/05/17 Javascript
nodejs结合socket.io实现websocket通信功能的方法
2018/01/12 NodeJs
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
Python生成器定义与简单用法实例分析
2018/04/30 Python
python读取和保存图片5种方法对比
2018/09/12 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
python http基本验证方法
2018/12/26 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
土木建筑学生自我评价
2014/01/14 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
竞选村长演讲稿
2014/04/28 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
高中生物教学反思
2016/02/20 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
源码解读Spring-Integration执行过程
2021/06/11 Java/Android