全方面的采集神器(一下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>