全方面的采集神器(一下file_get_contents函数可以获取远程链接数据的方法)

优采云 发布时间: 2022-01-26 09:10

  全方面的采集神器(一下file_get_contents函数可以获取远程链接数据的方法)

  做过data采集的朋友,cURL一定不会陌生。虽然PHP中有一个file_get_contents函数可以获取远程链接的数据,但是它的可控性太差了。对于各种复杂的情况采集,file_get_contents 显得有些力不从心。因此,本文将向您介绍采集神器cURL的使用。

  我先给大家补充一下file_get_contents函数是如何获取远程链接数据的。

  这段代码会直接使用curl来显示文件内容,但是问题来了,因为curl是php的扩展,有些主机为了安全会金庸curl,而宁外php在本地调试的时候也会关闭curl,所以会报错发生。所以这段代码不可取,所以云洛给他重写了

  修改后的版本是对curl扩展做判断,看服务器是否开启了curl扩展。如果打开则直接显示该文件,如果未打开则显示提示文字。

  虽然问题已经解决,但还有另一个问题。我只是显示一段文字,并没有用任何东西来做大事,那我为什么要写这么多代码呢??

  经过一番废话测试,发现file_get_contents获取远程文件内容并不比curl慢,而且在某些文件较少的情况下可能比curl扩展快很多,于是我又重写了代码

  工具

  火狐+萤火虫

  “要想把工作做好,就必须先利好自己的工具。” 在分析案例之前,我们先学习一下如何使用神器 Firebug 来获取我们需要的信息。

  使用F12打开Firebug,我们可以得到如图所示的界面(一):

  1、箭头图标是“元素选择”工具。单击一次将突出显示该图标。同时,鼠标在页面中的移动会同时选中HTML菜单中的相应内容。当元素被设置时,图标高亮被取消。如图(二):

  Firebug 视图元素

  2、控制台

  JS中console.log系列函数的打印输出到这里。

  3、HTML

  HTML内容,注意这里看到的不一定是采集要解析的内容,采集时对内容的分析总是基于查看源码(Ctrl+U ),这里只是为了快速定位元素结构,然后在源码中选择一个专门的引用来定位对应的位置。

  例如,如果您在 HTML 中看到一个标签

  演示

  , 但是你看源码时看到的可能是

  演示

  ,如果按照前者对采集的内容进行正则匹配,则不会得到结果。

  4、CSS

  这是CSS文件内容

  5、脚本

  这是Javascript文件内容

  6、DOM

  dom节点内容

  7、网络

  每个请求链接的数据,这里是我们采集要重点分析的地方,它可以展示每个请求的参数、请求头、cookie数据等。在页面提交会刷新的情况下,需要使用hold,这样刷新后页面请求内容会保留在控制台中,如图(三):

  此外,Firefox还有一个Tamper data扩展,也可以获取请求数据,必要时可以安装使用。

  8、Cookie

  Cookie 数据

  在图中(一),我们也看到下面有很多可选的小菜单项,其中keep是我们要注意的。当它被选中时,即使提交了表单并且页面是刷新后,下方内容区的数据依然会被保留,这对于分析提交的数据尤为关键。

  总结

  我们在分析采集的请求时,主要关心的是“网络”菜单中的请求数据。如有必要,使用“保持”查看刷新页面的请求数据。在发出请求之前,您可以使用“清除”清除以下内容。

  案例分析

  一、简单采集

  这里所说的简单采集是指单个页面GET请求的采集,简单到即使通过file_get_contents函数也可以轻松获取页面返回结果。

  代码片段 file_get_contents

<p>

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线