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的ZIP压缩类分享
May 04 PHP
php小技巧之过滤ascii控制字符
May 14 PHP
PHP实现的简单日历类
Nov 29 PHP
PHP程序员必须清楚的问题汇总
Dec 18 PHP
推荐5款跨平台的PHP编辑器
Dec 25 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
Mar 18 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
PHP中利用sleep函数实现定时执行功能实现代码
Aug 25 PHP
PHP面向对象程序设计组合模式与装饰模式详解
Dec 02 PHP
php封装单文件上传到数据库(路径)
Oct 15 PHP
PHP实现的数组和XML文件相互转换功能示例
Mar 15 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 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
PL-880隐藏功能
2021/03/01 无线电
遍历指定目录下的所有目录和文件的php代码
2011/11/27 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
js与jquery分别实现tab标签页功能的方法
2016/11/18 Javascript
jquery表单验证插件validation使用方法详解
2017/01/20 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
vue中的mvvm模式讲解
2019/01/31 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
《雷雨》教学反思
2014/02/20 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
尼克胡哲观后感
2015/06/08 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书