热门标签 | 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



推荐阅读
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • Node.js 配置文件管理方法详解与最佳实践
    本文详细介绍了 Node.js 中配置文件管理的方法与最佳实践,涵盖常见的配置文件格式及其优缺点,并提供了多种实用技巧和示例代码,帮助开发者高效地管理和维护项目配置,具有较高的参考价值。 ... [详细]
  • Spring 切面配置中的切点表达式详解
    本文介绍了如何在Spring框架中使用AspectJ风格的切面配置,详细解释了切点表达式的语法和常见示例,帮助开发者更好地理解和应用Spring AOP。 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 思科IOS XE与ISE集成实现TACACS认证配置
    本文详细介绍了如何在思科IOS XE设备上配置TACACS认证,并通过ISE(Identity Services Engine)进行用户管理和授权。配置包括网络拓扑、设备设置和ISE端的具体步骤。 ... [详细]
  • Ansible:自动化运维工具详解
    Ansible 是一款新兴的自动化运维工具,基于 Python 开发,集成了多种运维工具(如 Puppet、CFEngine、Chef、Func 和 Fabric)的优点,实现了批量系统配置、程序部署和命令执行等功能。本文将详细介绍 Ansible 的架构、特性和优势。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • Vue应用预渲染技术详解与实践 ... [详细]
  • C# .NET 4.1 版本大型信息化系统集成平台中的主从表事务处理标准示例
    在C# .NET 4.1版本的大型信息化系统集成平台中,本文详细介绍了主从表事务处理的标准示例。通过确保所有操作要么全部成功,要么全部失败,实现主表和关联子表的同步插入。主表插入时会返回当前生成的主键,该主键随后用于子表插入时的关联。以下是一个示例代码片段,展示了如何在一个数据库事务中同时添加角色和相关用户。 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • 为了评估精心优化的模型与策略在实际环境中的表现,Google对其实验框架进行了全面升级,旨在实现更高效、更精准和更快速的在线测试。新的框架支持更多的实验场景,提供更好的数据洞察,并显著缩短了实验周期,从而加速产品迭代和优化过程。 ... [详细]
  • 实现Nginx对ThinkPHP URL重写及PATHINFO支持的详细方法解析【PHP开发】
    在PHP后端开发中,实现Nginx对ThinkPHP的URL重写及PATHINFO支持是一项常见的需求。本文详细解析了经过多次尝试和研究,最终找到的一种有效配置方法,能够确保URL_MODERewrite功能正常运行,并提供稳定的服务。此外,文章还探讨了相关配置项的具体作用及其优化建议,帮助开发者更好地理解和应用这些技术。 ... [详细]
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社区 版权所有