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脚本的10个技巧(8)
Oct 09 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
php中怎么搜索相关联数组键值及获取之
Oct 17 PHP
百度ping方法使用示例 自动ping百度
Jan 26 PHP
php禁止浏览器使用缓存页面的方法
Nov 07 PHP
thinkPHP实现表单自动验证
Dec 24 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
php返回字符串中所有单词的方法
Mar 09 PHP
php判断两个日期之间相差多少个月份的方法
Jun 18 PHP
PHP框架性能测试报告
May 08 PHP
php实现给二维数组中所有一维数组添加值的方法
Feb 04 PHP
php项目中类的自动加载实例讲解
Sep 12 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
一个捕获函数输出的函数
2007/02/14 PHP
PHP session有效期问题
2009/04/26 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
asp javascript 实现关闭窗口时保存数据的办法
2007/11/24 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
基于jquery实现左右上下移动效果
2018/05/02 jQuery
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
python实现通过shelve修改对象实例
2014/09/26 Python
python自动翻译实现方法
2016/05/28 Python
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
python3.x实现base64加密和解密
2019/03/28 Python
深入了解Django中间件及其方法
2019/07/26 Python
django中media媒体路径设置的步骤
2019/11/15 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
2019/11/20 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
财务工作个人求职的自我评价
2013/12/19 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
新闻人物通讯稿
2014/10/09 职场文书
档案管理员岗位职责
2015/02/12 职场文书
贫困证明怎么写
2015/06/16 职场文书
2015年暑假生活总结
2015/07/13 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
办公室规章制度范本
2015/08/04 职场文书
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS
python绘制简单直方图(质量分布图)的方法
2022/04/21 Python