完整的采集神器(PHP中有file_get_contents函数可以获取远程链接数据)
优采云 发布时间: 2022-03-02 02:14完整的采集神器(PHP中有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扩展快很多,于是我又重写了代码
工具 Firefox (FireFox) + Firebug “如果你想做好,你必须先磨砺你的工具。” 在分析案例之前,我们先学习一下如何使用神器 Firebug 来获取我们需要的信息。使用F12打开Firebug,我们可以得到如图所示的界面(一):
1、箭头图标是“元素选择”工具。单击一次将突出显示该图标。同时,鼠标在页面中的移动会同时选中HTML菜单中的相应内容。当元素被设置时,图标高亮被取消。如图(二):Firebug 视图元素
2、控制台JS中console.log系列函数的打印输出到这里。3、HTMLHTML内容,注意这里看到的不一定是采集要解析的内容,采集时对内容的分析总是基于查看源码(Ctrl +U),这里只是可以快速定位元素的结构,然后在源码中选择一个特殊的引用来定位对应的位置。例如,如果您在 HTML 中看到一个标签
演示
, 但是你看源码时看到的可能是
演示
,如果按照前者对采集的内容进行正则匹配,则不会得到结果。4、CSS这里是CSS文件内容5、Script这里是Javascript文件内容6、DOMDom节点内容7、网络中各个请求链接的数据,这里是我们的采集 重点分析哪里,可以显示每个请求的参数、请求头、cookie数据等。在页面提交会刷新的情况下,需要使用hold,这样刷新后页面请求内容会保留在控制台中,如图(三):
此外,Firefox还有一个Tamper data扩展,也可以获取请求数据,必要时可以安装使用。8、CookiesCookie 数据
在图中(一),我们也看到下面有很多可选的小菜单项,其中keep是我们要注意的。当它被选中时,即使提交了表单并且页面是刷新后,下方内容区的数据依然会被保留,这对于分析提交的数据尤为关键。
总结 我们在分析采集的请求时,主要关心的是“网络”菜单中的请求数据。如有必要,使用“保持”查看刷新页面的请求数据。在发出请求之前,您可以使用“清除”清除以下内容。
案例分析一、Simple采集Simple采集这里指的是单页GET请求采集,简单到即使通过file_get_contents函数也能轻松获取页面返回结果。
代码片段 file_get_contents
<p>