php教程自学网 - 轻松零基础学php视频教程
条幅广告
当前位置: 主页 > PHP学堂 >

PHP爬虫技术知识点总结

时间:2018-08-22 18:19来源:未知 作者:admin 点击:
在的爬虫框架很多,比较流行的是基于python,nodejs,java,C#,PHP的的框架,其中又以基于python的爬虫流行最为广泛,还有的已经是一套傻瓜式的软件操作,如八爪鱼,火车头等软件。

 在的爬虫框架很多,比较流行的是基于python,nodejs,java,C#,PHP的的框架,其中又以基于python的爬虫流行最为广泛,还有的已经是一套傻瓜式的软件操作,如八爪鱼,火车头等软件。

  今天我们首先尝试的是使用PHP实现一个爬虫程序,首先在不使用爬虫框架的基础上实践也是为了理解爬虫的原理,然后再利用PHP的lib,框架和扩展进行实践。

  1.PHP简单的爬虫–原型

  爬虫的原理:

  给定原始的url;

  分析链接,根据设置的正则表达式获取链接中的内容;

  有的会更新原始的url再进行分析链接,获取特定内容,周而复始。

  将获取的内容保存在数据库中(mysql)或者本地文件中

  2.使用crul lib

  Curl是比较成熟的一个lib,异常处理、http header、POST之类都做得很好,重要的是PHP下操作MySQL进行入库操作比较省心。关于curl的说明具体可以查看PHP官方文档,不过在多线程Curl(Curl_multi)方面比较麻烦。

  开启crul

  针对winow系统:

  - php.in中修改(注释;去掉即可)

  extension=php_curl.dll

  php文件夹下的libeay32.dll, ssleay32.dll, libssh2.dll 还有 php/ext下的php_curl4个文件移入windows/system32

  使用crul爬虫的步骤:

  - 使用cURL函数的基本思想是先使用curl_init()初始化一个cURL会话;

  - 接着你可以通过curl_setopt()设置你需要的全部选项;

  - 然后使用curl_exec()来执行会话;

  - 当执行完会话后使用curl_close()关闭会话。

  还有我们获得url数据可能会有重复的,这部分处理在我的github上,对应demo2-01.php,或者demo2-02.php

  3.file_get_contents/stream_get_contents与curl对比

  3.1 file_get_contents/stream_get_contents对比

  stream_get_contents — 读取资源流到一个字符串

  与 [file_get_contents()]一样,但是 stream_get_contents() 是对一个已经打开的资源流进行操作,并将其内容写入一个字符串返回

  $handle = fopen($url, "r");

  $content = stream_get_contents($handle, -1);

  //读取资源流到一个字符串,第二个参数需要读取的最大的字节数。默认是-1(读取全部的缓冲数据)

  file_get_contents — 将整个文件读入一个字符串

  1$content = file_get_contents($url, 1024 * 1024);

  【注】 如果要打开有特殊字符的 URL (比如说有空格),就需要使用进行 URL 编码。

  3.2 file_get_contents/stream_get_contents与curl对比

  - fopen /file_get_contents 每次请求都会重新做DNS查询,并不对 DNS信息进行缓存。但是CURL会自动对DNS信息进行缓存。对同一域名下的网页或者图片的请求只需要一次DNS查询。这大大减少了DNS查询的次数。所以CURL的性能比fopen /file_get_contents 好很多。

  fopen /file_get_contents 在请求HTTP时,使用的是http_fopen_wrapper,不会keeplive。而curl却可以。这样在多次请求多个链接时,curl效率会好一些。

  fopen / file_get_contents 函数会受到php.ini文件中allow_url_open选项配置的影响。如果该配置关闭了,则该函数也就失效了。而curl不受该配置的影响。

  curl 可以模拟多种请求,例如:POST数据,表单提交等,用户可以按照自己的需求来定制请求。而fopen / file_get_contents只能使用get方式获取数据

(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
相关推荐
  • PHP学习进程
  • 做为一个php痴迷者,我一直想整理一份系列学习php的计划。下面是我学习php进程

  • PHP手册阅读笔记
  • 学习PHP以来一直希望有时间能够有时间通读PHP手册,最近终于强迫自己划出一些

  • phphome网站管理系统
  • PhpHome非常适合用来建立资讯类网站,比如政府、高校、行业门户和地区门户等

  • PHPCUSTOM集成环境介绍
  • PHPCUSTOM是windows系统下运行的完全绿色的PHP集成开发环境,是目前最便捷也是最

  • PHP生成奖状
  • ob_clean(); $realname = 姓名:最闲的码农; $schoolname = 社区:Laravel; $image = imagecreatefro

  • PHP-FPM与Nginx的通信机制总结
  • PHP-FPM 介绍 CGI 协议与 FastCGI 协议 每种动态语言( PHP,Python 等)的代码文件需要

  • PHP基础入门(一)---世界上最好用的编程语言
  • 作为一名程序员,我们应该都听过这样一个梗:PHP编程语言,是世界上最好用的

  • php随机数
  • rand()函数用户获取随机数,具体用法如下: rand()可以设置0个参数或者两个参数

  • php多线程实现
  • 多线程 线程 首先说下线程: 线程(thread) 是操作系统能够进行运算调度的最小单

  • 几种php实现定时任务的思路
  • PHP本身是没有定时功能的,PHP也不能多线程。PHP的定时任务功能必须通过和其他

猜你喜欢