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类
Nov 27 PHP
PHP 多维数组排序(usort,uasort)
Jun 30 PHP
PHP得到mssql的存储过程的输出参数功能实现
Nov 23 PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 PHP
PHP版本如何选择?应该使用哪个版本?
May 13 PHP
php使用APC实现实时上传进度条功能
Oct 26 PHP
PHP6新特性分析
Mar 03 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
Nov 16 PHP
[原创]php实现 data url的图片生成与保存
Dec 04 PHP
PHP实现图片批量打包下载功能
Mar 01 PHP
PHP7中I/O模型内核剖析详解
Apr 14 PHP
PHP Swoole异步读取、写入文件操作示例
Oct 24 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
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
2018/10/30 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
详解Python中for循环的使用方法
2015/05/14 Python
Python如何实现文本转语音
2016/08/08 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
Python内置异常类型全面汇总
2020/05/28 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
大学生社会实践评语
2014/04/25 职场文书
小学音乐教师个人工作总结
2015/02/05 职场文书
追悼会答谢词范文
2015/09/29 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
蓝天保卫战收官在即 :15行业将开展环保分级评价
2019/07/19 职场文书
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript