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 相关文章推荐
用PHP实现的四则运算表达式计算实现代码
Aug 02 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
PHP的PSR规范中文版
Sep 28 PHP
PHP自带函数给数字或字符串自动补齐位数
Jul 29 PHP
php内嵌函数用法实例
Mar 20 PHP
php实现遍历多维数组的方法
Nov 25 PHP
PHP如何将XML转成数组
Apr 04 PHP
Yii2框架数据库简单的增删改查语法小结
Aug 31 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
Apr 18 PHP
Laravel 实现关系模型取出需要的字段
Oct 10 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 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懒人函数 自动添加数据
2011/06/28 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
javascript 解决表单仍然提交即使监听处理函数返回false
2010/03/14 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
JS二叉树的简单实现方法示例
2017/04/05 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
详解在vue-test-utils中mock全局对象
2018/11/07 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
[58:57]2018DOTA2亚洲邀请赛3月29日小组赛B组 Effect VS VGJ.T
2018/03/30 DOTA
python通过线程实现定时器timer的方法
2015/03/16 Python
用matplotlib画等高线图详解
2017/12/14 Python
python3实现磁盘空间监控
2018/06/21 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
python字典一键多值实例代码分享
2019/06/14 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
网络信息安全承诺书
2014/03/26 职场文书
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
职位说明书范文
2014/05/07 职场文书
教师节倡议书2015
2015/04/27 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python