热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP爬虫两篇转载

为什么80%的码农都做不了架构师?http:hi.baidu.comxiaojiangitem774af38966cf44ca98255ff0

为什么80%的码农都做不了架构师?>>>   hot3.png

http://hi.baidu.com/xiaojiang/item/774af38966cf44ca98255ff0

classCurlComponent{var $headers;var $user_agent;var $compression;var $COOKIE_file;var $proxy;functionset_value($COOKIEs=TRUE,$COOKIE='COOKIEs.txt',$compression='gzip',$proxy='') {$this->headers[] = "Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg";$this->headers[] = "Connection: Keep-Alive";$this->headers[] = "Content-type: application/x-www-form-urlencoded";$this->user_agent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)";$this->compression=$compression;$this->proxy=$proxy;$this->COOKIEs=$COOKIEs;if ($this->COOKIEs == TRUE) $this->COOKIE($COOKIE);}functionCOOKIE($COOKIE_file) {if (file_exists($COOKIE_file)) {$this->COOKIE_file=$COOKIE_file;} else {@fopen($COOKIE_file,'w')or$this->error("The COOKIE file could not be opened. Make sure this directory has the correct permissions");$this->COOKIE_file=$COOKIE_file;@fclose($COOKIE_file);}}functionget($url,$refer='') {$process =curl_init($url);curl_setopt($process,CURLOPT_REFERER, $refer);curl_setopt($process,CURLOPT_HTTPHEADER, $this->headers);curl_setopt($process,CURLOPT_USERAGENT, $this->user_agent);if ($this->COOKIEs == TRUE)curl_setopt($process,CURLOPT_COOKIEFILE, $this->COOKIE_file);if ($this->COOKIEs == TRUE)curl_setopt($process,CURLOPT_COOKIEJAR, $this->COOKIE_file);curl_setopt($process,CURLOPT_ENCODING, $this->compression);curl_setopt($process,CURLOPT_TIMEOUT, 30000);if ($this->proxy)curl_setopt($cUrl,CURLOPT_PROXY, 'proxy_ip:proxy_port');curl_setopt($process,CURLOPT_RETURNTRANSFER, 1);$return =curl_exec($process);curl_close($process);return $return;}functionpost($url,$data,$refer) {$process =curl_init($url);curl_setopt($process,CURLOPT_REFERER, $refer);curl_setopt($process,CURLOPT_HTTPHEADER, $this->headers);curl_setopt($process,CURLOPT_USERAGENT, $this->user_agent);if ($this->COOKIEs == TRUE)curl_setopt($process,CURLOPT_COOKIEFILE, $this->COOKIE_file);if ($this->COOKIEs == TRUE)curl_setopt($process,CURLOPT_COOKIEJAR, $this->COOKIE_file);curl_setopt($process,CURLOPT_ENCODING, $this->compression);curl_setopt($process,CURLOPT_TIMEOUT, 30000);if ($this->proxy)curl_setopt($cUrl,CURLOPT_PROXY, 'proxy_ip:proxy_port');curl_setopt($process,CURLOPT_POSTFIELDS, $data);curl_setopt($process,CURLOPT_RETURNTRANSFER, 1);curl_setopt($process,CURLOPT_FOLLOWLOCATION, 1);curl_setopt($process,CURLOPT_POST, 1);$return =curl_exec($process);curl_close($process);return $return;}functionerror($error) {echo "

cURL Error
$error
";die;}}?>



http://www.hdj.me/get-COOKIE-without-COOKIEjar-by-curl

PHP中CURL类是一个非常牛逼的工具类,具体怎么牛逼就不啰嗦了。
对于COOKIE,CURL类也有很不错的支持,但不够灵活,并未能通过现成的方法以变量的方法获取到,而以要通过以下方法实现。

// 把COOKIE保存至COOKIE.txt
curl_setopt($ch, CURLOPT_COOKIEFILE,'COOKIE.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR,'COOKIE.txt');


先把COOKIE保存文件,调用的时候还得读取文件,这样意味着两次的IO操作,效率如何,不用说大家都清楚了。
那么有没有办法可以绕过写读文件呢?不卖关子,直接上代码:

// 初始化CURL
$ch= curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
// 获取头部信息
curl_setopt($ch, CURLOPT_HEADER, 1);
// 返回原生的(Raw)输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 执行并获取返回结果
$content= curl_exec($ch);
// 关闭CURL
curl_close($ch);
// 解析HTTP数据流
list($header,$body) =explode("\r\n\r\n",$content);
// 解析COOKIE
preg_match("/set\-COOKIE:([^\r\n]*)/i",$header,$matches);
// 后面用CURL提交的时候可以直接使用
// curl_setopt($ch, CURLOPT_COOKIE, $COOKIE);
$COOKIE= $matches[1];


打完收工!欢迎大家来喷!






转:https://my.oschina.net/nooser/blog/284428



推荐阅读
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • 本文是一篇翻译文章,介绍了async/await的用法和特点。async关键字被放置在函数前面,意味着该函数总是返回一个promise。文章还提到了可以显式返回一个promise的方法。该特性使得async/await更易于理解和使用。本文还提到了一些可能的错误,并希望读者能够指正。 ... [详细]
  • SQL Server 内存中OLTP内部机制概述(一)
    内存中OLTP(项目名为“Hekaton”)是一个新的完全集成到SQLServer中的数据库引擎组件。它专为访问内存常驻数据的OLTP工作负荷而进行优化。内存中OLTP有助于OLT ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • PHP中的curl_multi系列函数可以实现同时请求多个URL来实现并发,而不是像普通curl函数那样请求后会阻塞,直到结果返回才进行下一个请求。因此在批量请求URL时可通过curl_multi系列函数提升程序的运行效率。curl普通请求$startT ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
author-avatar
lyglpp
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有