phpfile_get_contents数据采集与常用见问题解决_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了phpfile_get_contents数据采集与常用见问题解决_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3554字,纯文字阅读大概需要6分钟。
内容图文
![phpfile_get_contents数据采集与常用见问题解决_PHP教程](/upload/InfoBanner/zyjiaocheng/181/c1cbb8bf9b51418594a1f97a81951729.jpg)
先来看问题
file_get_contents不能获取带端口的网址
例如:
代码如下 | |
file_get_contents('http://localhost:12345'); |
没有任何获取。
解决方法是 :关闭selinux
1 永久方法 – 需要重启服务器
修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。
2 临时方法 – 设置系统参数
使用命令setenforce 0
附:
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式
file_get_contents超时
代码如下 | |
function _file_get_contents($url) } |
好了上面的问题得到解决之后我们可以开始采集了。
代码如下 | |
//全国,判断条件是$REQUEST_URI是否含有html if (!strpos($_SERVER["REQUEST_URI"],".html")) { $page="http://qq.ip138.com/weather/"; $html = file_get_contents($page,'r'); $pattern="/全国主要城市、县当天和未来五天天气趋势预报在线查询(.*?) //正则匹配之间的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("对不起,该地址不存在!点击这里返回"); exit(0); } $html = file_get_contents($page,'r'); $pattern="/五天天气趋势预报(.*?)请输入输入市/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("对不起,该地址不存在!点击这里返回"); exit(0); } $html = file_get_contents($page,'r'); $pattern="/五天天气趋势预报(.*?)请输入输入市/si"; preg_match($pattern,$html,$pg); echo ""; //获取真实的图片地址 $p=preg_replace('//image//', 'http://qq.ip138.com/image/', $pg[1]); echo $p; } ?> |
如果上面办法无法采集到数据我们可以使用来处理
代码如下 | |
$url = "http://www.bKjia.c0m "; $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); //在需要用户检测的网页里需要增加下面两行 //curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); //curl_setopt($ch, CURLOPT_USERPWD, US_NAME.":".US_PWD); $contents = curl_exec($ch); curl_close($ch); echo $contents; ?> |
http://www.bkjia.com/PHPjc/633074.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/633074.htmlTechArticle在批量的数据采集在php中很少会使用file_get_contents函数来操作,但是如果是小量的我们可以使用file_get_contents函数操作,因为它不但好用而且...
内容总结
以上是互联网集市为您收集整理的phpfile_get_contents数据采集与常用见问题解决_PHP教程全部内容,希望文章能够帮你解决phpfile_get_contents数据采集与常用见问题解决_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。