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 相关文章推荐
第十节--抽象方法和抽象类
Nov 16 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
Jun 04 PHP
PHP中simplexml_load_string函数使用说明
Jan 01 PHP
非常好用的两个PHP函数 serialize()和unserialize()
Feb 04 PHP
php对二维数组进行排序的简单实例
Dec 19 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
linux中cd命令使用详解
Jan 08 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
Mar 07 PHP
php简单实现查询数据库返回json数据
Apr 16 PHP
Symfony2学习笔记之控制器用法详解
Mar 17 PHP
利用php输出不同的心形图案
Apr 22 PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 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中实现Javascript的escape()函数代码
2010/08/08 PHP
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
php封装的连接Mysql类及用法分析
2015/12/10 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
jQuery插件实现文件上传功能(支持拖拽)
2020/08/27 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
学习python (2)
2006/10/31 Python
python中base64加密解密方法实例分析
2015/05/16 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
Python实现的读取/更改/写入xml文件操作示例
2018/08/30 Python
python实现决策树分类
2018/08/30 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
如何开发安全的AJAX应用
2014/03/26 面试题
Java的类与C++的类有什么不同
2014/01/18 面试题
求职简历自荐信范文
2013/10/21 职场文书
团支书的期末学习总结自我评价
2013/11/01 职场文书
前台接待岗位职责
2013/12/03 职场文书
好家长事迹材料
2014/01/23 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书