全方面的采集神器(一下file_get_contents函数可以获取远程链接数据的方法)
优采云 发布时间: 2021-11-03 10:11全方面的采集神器(一下file_get_contents函数可以获取远程链接数据的方法)
对于做过数据采集的人来说,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) + Firebug
“工人们要想做得好,就必须磨砺他们的工具。” 在分析案例之前,让我们学习一下如何使用神器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 数据扩展,也可以获取请求数据,必要时可以安装和使用。
8、饼干
饼干数据
在图片中(一),你也可以看到下面有很多可选的小菜单项,其中保留是我们要注意的。选择时,即使提交表单后刷新页面,下面内容区的数据仍会保留,这对于分析提交的数据尤为关键。
总结
我们在分析采集请求时,主要关心的是“Network”菜单中的请求数据。必要时,使用“Keep”查看刷新页面的请求数据。您可以在请求前使用“清除”清除以下内容。
案例分析
一、简单采集
这里所说的简单采集指的是单页GET请求的采集。如此简单,即使通过file_get_contents函数,也可以轻松获取页面返回结果。
代码片段 file_get_contents
<p>