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 相关文章推荐
实现了一个PHP5的getter/setter基类的代码
Feb 25 PHP
php生成缩略图填充白边(等比缩略图方案)
Dec 25 PHP
PHP5.5在windows安装使用memcached服务端的方法
Apr 16 PHP
ThinkPHP Mobile使用方法简明教程
Jun 18 PHP
PHP实现自动登入google play下载app report的方法
Sep 23 PHP
PHP多进程编程实例
Oct 15 PHP
php实现事件监听与触发的方法
Nov 21 PHP
Yii全局函数用法示例
Jan 22 PHP
php中类和对象:静态属性、静态方法
Apr 09 PHP
PHP实现ASCII码与字符串相互转换的方法
Apr 29 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
Jun 17 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
PHP安装全攻略:APACHE
2006/10/09 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
django 外键model的互相读取方法
2018/12/15 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
Django缓存系统实现过程解析
2019/08/02 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
一年级语文教学反思
2014/02/13 职场文书
工程售后服务承诺书
2014/05/21 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
干部作风建设工作总结
2014/10/29 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
奖学金感谢信
2015/01/21 职场文书
搞笑婚前保证书
2015/02/28 职场文书
会计求职自荐信范文
2015/03/04 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
起诉意见书范文
2015/05/19 职场文书
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL