1. class UsualFunForNetWorkHelper
  2. {
  3. /***
  4. * post请求数据
  5. */
  6. public static function HttpsPost($url, $data = null, $headers = null)
  7. {
  8. $curl = curl_init();
  9. curl_setopt($curl, CURLOPT_URL, $url);
  10. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  11. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  12. if (!empty($data)){
  13. curl_setopt($curl, CURLOPT_POST, 1);
  14. curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  15. }
  16. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  17. $output = curl_exec($curl);
  18. curl_close($curl);
  19. header("Content-type: text/html; charset=utf-8");
  20. return $output;
  21. }
  22.  
  23. /***
  24. * http的get访问方法
  25. */
  26. public static function HttpGet($url, $headers = null)
  27. {
  28. $curl = curl_init();
  29. curl_setopt($curl, CURLOPT_URL, $url);
  30. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  31. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  32. curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
  33. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
  34. curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
  35.  
  36. curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
  37. //curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
  38. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
  39. $output = curl_exec($curl);
  40. //echo '['.$output.']';
  41. return $output;
  42. }
  43.  
  44. /**
  45. * 获取图片
  46. * @param $url
  47. * @param $content_type
  48. * @return bool|int|mixed
  49. */
  50. public static function HttpGetImg($url,&$content_type,&$error='')
  51. {
  52. $content_type = '';
  53. $count = 0;
  54. $e_no = 28;
  55. while($count < 10 && $e_no === 28)//网络超时,10次重复请求
  56. {
  57. $curl = curl_init();
  58. curl_setopt($curl, CURLOPT_URL, $url);
  59. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  60. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  61. curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
  62. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
  63. curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
  64.  
  65. curl_setopt($curl, CURLOPT_TIMEOUT, 5); // 设置超时限制防止死循环
  66. //curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
  67. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
  68. $output = curl_exec($curl);
  69. $content_type = curl_getinfo($curl,CURLINFO_CONTENT_TYPE);
  70.  
  71. $e_no = curl_errno($curl);
  72. curl_close($curl);
  73. $count ++;
  74. }
  75. if($e_no !== 0)
  76. {
  77. $error = $e_no;
  78. if($e_no === 28)
  79. {
  80. Log::write('请求图片超时10次,放弃,url:'.$url);
  81. }
  82. return false;
  83. }
  84. $content_type = strval($content_type);
  85. $ok_type=[
  86. 'application/octet-stream',
  87. 'image/bmp',
  88. 'image/gif',
  89. 'image/jpeg',
  90. 'image/png'
  91. ];
  92. if(!in_array($content_type,$ok_type))
  93. {
  94. return false;
  95. }
  96. return $output;
  97. }
  98.  
  99. }

  

php curl抓取类分享的更多相关文章

  1. 分享一个c#t的网页抓取类

    using System; using System.Collections.Generic; using System.Web; using System.Text; using System.Ne ...

  2. PHP使用CURL抓取网页

    CURL是一个非常强大的开源库,支持很多协议,包括HTTP.FTP.TELNET等,我们使用它来发送HTTP请求.它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS ...

  3. php curl抓取远程页面内容的代码

    使用php curl抓取远程页面内容的例子. 代码如下: <?php /** * php curl抓取远程网页内容 * edit by www.jbxue.com */ $curlPost = ...

  4. PHP CURL 抓取失败 自己调试

    蛋疼的一下午,物理机win7旗舰版+APACHE2 ,CURL抓取一直成功. 虚拟机ubuntu+apache2一直抓取失败. 晚上,问个仁兄才知道,CURL可以调试: 参考这位兄台: 地址 curl ...

  5. shell用curl抓取页面乱码,参考一下2方面(转)

    1.是用curl抓取的数据是用类似gzip压缩后的数据导致的乱码.乱码:curl www.1ting.com |more乱码:curl -H "Accept-Encoding: gzip&q ...

  6. 使用file_get_contents()和curl()抓取网络资源的效率对比

    使用file_get_contents()和curl()抓取网络资源的效率对比 在将小程序用户头像合成海报的时候,用到了抓取用户头像对应的网络资源,那么抓取方式有很多,比如 file_get_cont ...

  7. 好用的 curl 抓取 页面的封装函数

    由于经常使用php curl 抓取页面的内容,在此mark 平时自己封装的 curl函数,(其实 现在也开始用 Python 来爬了~ ^-^) /** * 封装curl方法 * @author Fr ...

  8. 通过CURL抓取页面中的图片路径并下载到本地

    1.首页是图片处理页面downpic.php <?phpfunction getImage($url,$filename="") { if($url=="" ...

  9. curl抓取页面时遇到重定向的解决方法

    用php的curl抓取网页遇到了问题,为阐述方便,将代码简化如下: <?php function curlGet($url) { $ch = curl_init(); curl_setopt($ ...

随机推荐

  1. 《Linux内核原理与分析》第四周作业

    课本:第3章 MenuOS的构造 内容总结 计算机的"三大法宝" 存储程序计算机 函数调用堆栈 中断 操作系统的"两把宝剑" 中断上下文切换:保存现场和恢复现场 ...

  2. NOIP2012 Day1 T2国王游戏 洛谷P1080

    第一篇博客啊…… 由于我太弱了,还要去补不全的知识点准备参加人生第一次NOIp,所以第一篇博客就简短一点好了(偷懒就直说吧……) 洛谷P1080传送门 题意概括: 有N对数ai和bi,以及两个数a0和 ...

  3. ArrayUtil的创建和使用

    求数组最小值求数组最大值遍历数组元素求数组总和求数组平均数求数组反转实现数组的复制对数组进行排序 写入的方法和包: public class ArrayUtil { //求数组的最大值 public ...

  4. #学习笔记#JSP数据交互

    #学习笔记#JSP数据交互 数据库的使用方式:   当用户在第一个页面的查询框输入查询语句点提交的时候我们是用什么样的方式完成这个查询的? 答:我们通过在第一个页面提交表单的形式,真正的数据库查询时在 ...

  5. 第三章 C#程序结构[3.2 选择结构的应用(Windows窗体应用程序)(四)]

    [案例]设计一个顾客选购商品的系统.其中,顾客身份有两类,一类是VIP,另一类是普通会员:商品种类有3种.分别是上衣.裤子和鞋子.其中,VIP享受8折优惠和商店赠送的礼品,而普通会员都不享受.单击[确 ...

  6. 【C++】读取参数的类

    在C++程序中,如果我们把程序中的参数都保存在txt文本中,运行时再去读取.这样的好处是,当我们需要调参的时候,不需要每次都重新编译程序,大大提升了效率. 今日分享一份实现以上功能的代码,代码来源:h ...

  7. Flask--templates-多个模板文件,视图函数如何判断查询路径

    结论:以当前视图的模板为基准,查找模板文件,如果没有找到就会报错,如果需要更换模板的访问路径,可以修改__name__参数. 参考资料: https://blog.csdn.net/f70408410 ...

  8. 我是一个录像机(NVR)

    我是一个网络录像机,简称NVR.我的前辈是DVR,我们的区别很简单,DVR接的是模拟摄像机,我连接的是IP摄像机. 我的前辈DVR比我辛苦,因为模拟摄像机的模拟信号连过来之后,他要进行数字化.编码压缩 ...

  9. 在高并发情况nginx的作用

    1 场景一:如图 在单机的情况下例如:单个tomcat 有100w条请求的时候,而默认tomcat支持的并发数量并不能达到要求,所所以单台服务器 扛不住 容易宕机,瘫痪 2 高并发的情况下要让服务器不 ...

  10. 在 iOS 上通过 802.11k、802.11r 和 802.11v 实现 Wi-Fi 网络漫游

    原文: https://support.apple.com/zh-cn/HT202628 了解 iOS 如何使用 Wi-Fi 网络标准提升客户端漫游性能.   iOS 支持在企业级 Wi-Fi 网络上 ...