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 相关文章推荐
珊瑚虫IP库浅析
Feb 15 PHP
php minixml详解
Jul 19 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
使用PHP备份MYSQL数据的多种方法
Jan 15 PHP
thinkphp模板赋值与替换实例简述
Nov 24 PHP
PHP生成RSS文件类实例
Dec 05 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
Smarty模板引擎缓存机制详解
May 23 PHP
PHP自定义函数格式化json数据示例
Sep 14 PHP
thinkPHP5.0框架命名空间详解
Mar 18 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
Laravel框架中缓存的使用方法分析
Sep 06 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
2020最新CPU的性能排名
2020/04/02 数码科技
PHP 字符串操作入门教程
2006/12/06 PHP
关于PHP5 Session生命周期介绍
2010/03/02 PHP
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
2016/06/05 PHP
微信支付的开发流程详解
2016/09/13 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
js统计录入文本框中字符的个数并加以限制不超过多少
2014/05/23 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
React组件的三种写法总结
2017/01/12 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
JavaScript WeakMap使用详解
2021/02/05 Javascript
python多进程读图提取特征存npy
2019/05/21 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
Python Flask异步发送邮件实现方法解析
2020/08/01 Python
python实现登录与注册系统
2020/11/30 Python
应届生财务管理求职信
2013/11/06 职场文书
酒店人事专员岗位职责
2013/12/19 职场文书
大型晚会策划方案
2014/02/06 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
争先创优活动总结
2014/08/27 职场文书
干部年终考核评语
2015/01/04 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python
php去除deprecated的实例方法
2021/11/17 PHP